Единицы времени

Свойство timeUnit разбивает временные значения на интервалы или выделяет из них нужные части. Его можно использовать в определении поля канала, как отдельное преобразование и в предикате поля.

Vega-Lite поддерживает следующие единицы времени:

  • "year" — годы григорианского календаря.
  • "quarter" — трёхмесячные интервалы с началом в январе, апреле, июле и октябре.
  • "month" — календарные месяцы: январь, февраль и т. д.
  • "date" — календарный день месяца: 1 января, 2 января и т. д.
  • "week" — недели с началом в воскресенье. Дни до первого воскресенья года относятся к неделе 0; первое воскресенье начинает неделю 1, второе — неделю 2 и т. д.
  • "day" — день недели: воскресенье, понедельник и т. д.
  • "dayofyear" — день года: 1, 2, …, 365 и т. д.
  • "hours" — часы суток: 00:00, 01:00 и т. д.
  • "minutes" — минуты часа: 12:00, 12:01 и т. д.
  • "seconds" — секунды минуты: 12:00:00, 12:00:01 и т. д.
  • "milliseconds" — миллисекунды секунды.

Единицы можно объединять в одной строке. yearmonthdate учитывает год, месяц и день, но не часы, минуты и секунды. monthdate учитывает месяц и день без года — это удобно для анализа сезонности.

По умолчанию используются местные дата и время. Для UTC добавьте префикс utc, например "utcyear" или "utcyearmonth". В канале encoding префикс binned обозначает уже разбитые на хронологические интервалы данные: "binnedyearmonth" или "binnedutcyearmonth". Такой префикс применяется к временным интервалам, а не к циклическим частям даты.

Содержание страницы

Единица времени в канале кодирования

// Спецификация одиночного представления или слоя
{
  ...,
  "mark/layer": ...,
  "encoding": {
    "x": {
      "timeUnit": ...,               // Единица времени
      "field": ...,
      "type": "temporal",
      ...
    },
    "y": ...,
    ...
  },
  ...
}

Следующая диаграмма показывает температуру в Сиэтле, агрегированную по месяцам:

Для примитивов bar, rect и image единицы времени считаются интервалами. По умолчанию столбец тянется от начала месяца до его конца:

Свойство bandPosition: 0 выравнивает столбец по центру деления оси:

Если исходные данные уже разбиты на интервалы, binned сохраняет это разбиение и выбирает подходящее оформление оси:

Положение внутри временного интервала

По умолчанию поле с timeUnit отображается в начале интервала (bandPosition: 0). Значение bandPosition: 0.5 размещает точку в середине интервала:

Примечание к версии: в исходном тексте это свойство названо band; в спецификации примера и текущей схеме используется bandPosition.

Порядковая шкала для единиц времени

Обычно поле с timeUnit имеет тип "temporal" и использует временную шкалу. Если задать type: "ordinal", оно будет использовать дискретную порядковую шкалу:

Преобразование timeUnit

// Любая спецификация представления
{
  ...,
  "transform": [
    {"timeUnit": ..., "field": ..., "as": ...}, // Преобразование единицы времени
     ...
  ],
  ...
}
Свойство преобразования Тип Описание
timeUnit TimeUnit или TimeUnitTransformParams Обязательная единица времени.
field FieldName Обязательное поле данных для применения единицы времени.
as FieldName Обязательное выходное поле для значения единицы времени.

Здесь преобразование извлекает месяц из дат, после чего показывается максимальная температура. Если timeUnit находится вне encoding, ось не форматируется автоматически и формат приходится задавать вручную. Поэтому для обычных диаграмм удобнее указывать единицу времени в канале:

Время UTC

Разбор входных данных

  1. Даты в формате ISO разбираются как UTC. В JavaScript строка с датой без времени считается UTC, а строка с датой и временем без часового пояса — местным временем.

Если данные уже разбиты на интервалы и повторное преобразование не нужно, используйте префикс binned:

  1. В остальных случаях время по умолчанию считается местным:
  1. Для данных не в формате ISO задайте в format разбор UTC с шаблоном времени:

Вывод времени

По умолчанию Vega-Lite выводит дату в местном времени даже тогда, когда входные данные были разобраны как UTC. Для вывода по UTC задайте соответствующую единицу времени или тип шкалы.

Единица времени UTC при местном входном времени:

Временная шкала UTC при входных данных в UTC:

Параметры единицы времени

timeUnit может быть объектом со следующими свойствами:

Свойство Тип Описание
unit TimeUnit Задаёт способ разбиения значений даты и времени на интервалы.
maxbins number Если unit не задан, maxbins используется для определения единиц времени.
step number Число шагов между интервалами, выраженное в самой мелкой из заданных единиц времени.
utc boolean При true используется часовой пояс UTC. Эквивалентно единице времени с префиксом utc.
binned boolean Указывает, что данные уже разбиты по этой единице времени. При true Vega-Lite только форматирует данные, примитивы и направляющие, не применяя преобразование timeUnit повторно.

Пример: настройка шага

Здесь step задаёт пятиминутные интервалы для суммы пройденного расстояния: