Vega-lite не имеет собственного типа данных для представления периодов времени, он имеет только тип данных, представляющий временные метки. При использовании полосовых меток для временных меток нулевая точка зависит от контекста, поэтому Vega-Lite не будет пытаться вывести ее за вас.
Для ваших данных я бы, вероятно, подошел к нему следующим образом:
- Используйте аргумент
parse
в ваших данных, чтобы указать ожидаемый формат ваших временных меток, как в исходном вопросе.
- Используйте
timeUnit
преобразование, чтобы вручную вычислить соответствующую нулевую точку для ваших данных: здесь yearmonthdate
timeUnit работает хорошо, потому что он удаляет часы, минуты и секунды.
- Используйте кодировку
y2
в своей полосе, чтобы указать эту нулевую точку для отметки полосы.
Соединенный, результат может выглядеть примерно так (Редактор Vega):
{
"data": {
"values": [
{"Rank": 1, "Name": "David Lekuta Rudisha", "Time": "1:42.15"},
{"Rank": 2, "Name": "Taoufik Makhloufi", "Time": "1:42.61"},
{"Rank": 3, "Name": "Clayton Murphy", "Time": "1:42.93"},
{"Rank": 4, "Name": "Pierre-Ambroise Bosse", "Time": "1:43.41"},
{"Rank": 5, "Name": "Ferguson Cheruiyot Rotich", "Time": "1:43.55"},
{"Rank": 6, "Name": "Marcin Lewandowski", "Time": "1:44.20"},
{"Rank": 7, "Name": "Alfred Kipketer", "Time": "1:46.02"},
{"Rank": 8, "Name": "Boris Berian", "Time": "1:46.15"}
],
"format": {"parse": {"Time": "date:'%M:%S.%L'"}}
},
"transform": [
{"timeUnit": "yearmonthdate", "field": "Time", "as": "zeropoint"}
],
"mark": "bar",
"encoding": {
"x": {"field": "Name", "type": "nominal"},
"y": {
"field": "Time",
"timeUnit": "minutessecondsmilliseconds",
"type": "temporal",
"title": "Time"
},
"y2": {"field": "zeropoint", "timeUnit": "minutessecondsmilliseconds"}
},
"$schema": "https://vega.github.io/schema/vega-lite/v4.0.0.json"
}
![введите здесь описание изображения](https://i.stack.imgur.com/areAc.png)
person
jakevdp
schedule
29.01.2020