Единицы времени
Свойство 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
Разбор входных данных
- Даты в формате ISO разбираются как UTC. В JavaScript строка с датой без времени считается UTC, а строка с датой и временем без часового пояса — местным временем.
Если данные уже разбиты на интервалы и повторное преобразование не нужно, используйте префикс binned:
- В остальных случаях время по умолчанию считается местным:
- Для данных не в формате 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 задаёт пятиминутные интервалы для суммы пройденного расстояния: