Как получить правильную дату в текстовом адаптере DateAxis AxisLabel? - PullRequest
0 голосов
/ 09 января 2020

У меня проблемы с получением правильного объекта даты при попытке изменить AxisLabel:

dateAxis.renderer.labels.template.adapter.add("text", function(text, target) {
  var date = target.dataItem.date, //Date Object "2020/01/01"
      labelText = text; // "Jul" for July
  return text;
});

Здесь target.dataItem.date дает мне объект Date с инициализированным только годом, с указанием месяца установить на январь каждый раз, тогда как текстовый параметр дает мне «июль» для июля. Почему объект даты неверен?

**** РЕДАКТИРОВАТЬ ****

Вот кодовое поле моей проблемы, которая фактически возникает, когда график ширина слишком узкая, поэтому dateAxis показывает только годы: https://codepen.io/XxSven/pen/rNadEPG

1 Ответ

1 голос
/ 11 января 2020

Это о "детализации сетки оси". Позвольте мне объяснить.

Ваши данные охватывают несколько лет. Это означает, что ось должна отображать масштаб в несколько лет. Чтобы он не был слишком забит линиями и метками сетки, он интуитивно изменяет гранулярность своей сетки / меток.

В вашем случае он переходит в режим «лет», то есть отображает линию сетки / метка для каждого года.

Теперь не имеет смысла отображать метку для января 2011 года, но для июля 2013 года. Сетка будет с нерегулярными интервалами, полностью выбивая пользователей из шкалы.

Поэтому, когда в режиме года, ось отображается для января каждого года, отсюда и то, что вы видите.

Что вы МОЖЕТЕ сделать, чтобы контролировать эту гранулярность. Он управляется настройкой minGridDistance осевого рендера. В основном это означает минимальное расстояние между линиями сетки.

Чем меньше число, тем более гранулированной будет ваша сетка.

Скажем, поместим ее в 10 пикселей:

dateAxis.renderer.minGridDistance = 10;

Теперь вы будете получать сетку / ярлык каждые 3 месяца. Уменьшите число еще больше, и вы можете перейти к отдельным месяцам, но, вероятно, столкнетесь с переполнением.

Суть в том, что Date объект, полученный адаптером меток, НЕ является датой фактического элемента данных в ваших данных. Это дата линии сетки, которую DateAxis хочет разместить, чтобы изобразить прогрессию ее масштаба.

Подробнее о гранулярности сетки можно прочитать здесь .

...