Vega-lite: почему ширина графика влияет на форматирование меток оси? - PullRequest
1 голос
/ 30 марта 2020

При рендеринге графика, где ось X основана на отметке времени, которая представлена ​​в секундах с начала эпохи * 1034, я наблюдаю странное поведение в сгенерированных метках для указания c ширины графика . Я экспериментировал с онлайн-редактором vega-lite с урезанной версией моего набора данных и только необходимыми опциями конфигурации. Если ширина указана в диапазоне 521-594, метки отметок времени отображаются как просто время (повторяя 6 утра, 6 вечера) для диапазона дней:

Chart with only time

Эти метки недопустимо расплывчаты. При других значениях ширины сгенерированные метки соответствуют ожиданиям:

Chart with day and time

См. этот редактор vega-lite и измените ширину на Посмотрите, как выход за пределы диапазона 521-594 влияет на метки на оси X.

Одна вещь об использовании "scale": {"type": "utc"} в этой конфигурации: удаление этого действительно решает проблему с метками , но тогда показанное время не то, что я хочу. Он отображается по местному времени, а не по UT C.

Я нашел несколько обходных путей: измените ширину графика или укажите формат метки stati c. Последний вводит свои собственные проблемы в зависимости от указанного формата, поскольку одну и ту же метку можно использовать, до некоторой степени, несколько раз, например, Mon Mar 23, Mon Mar 23 для разных времен этого дня.

Я пытался найти разные способы " исправить "метки через условное форматирование. Тем не менее, на основе примеров в документации, выражения для создания формата, похоже, ограничены условиями c, такими как «это первый месяц года?» а не реляционные, такие как "день для этого ярлыка совпадает с предыдущим?" Если возможно сгенерировать больше динамических меток оси c посредством форматирования, я открыт для этого совета. Тем не менее, vega-lite , как правило, делает хорошую работу по генерации меток без дальнейшей настройки, поэтому понимание того, почему это не работает для данных этого типа при указанных c ширинах , больше того, что я ищу.

Итак, моя конфигурация чего-то не хватает? Есть ли у меня какие-либо другие варианты, кроме упомянутых мной обходных путей?

1 Ответ

1 голос
/ 30 марта 2020

Положение и форматы меток определяются автоматически на основе содержимого диаграммы и доступного пространства (чтобы метки не перекрывались). Если автоматические результаты c не соответствуют вашим ожиданиям, вы можете более точно контролировать положения и метки тиков, используя соответствующие свойства оси label и tick .

Для Например, здесь мы используем форматы времени d3 , чтобы точно указать формат меток даты:

  "encoding": {
    "x": {
      "field": "timestamp",
      "type": "temporal",
      "scale": {"type": "utc"},
      "axis": {"format": "%b %e, %I%p"}
    },
    "y": {"field": "amount", "type": "quantitative"}
  }

enter image description here

Полный график spe c в редакторе

...