Vega-lite не имеет собственного типа данных для представления периодов времени, он имеет только тип данных, представляющий временные метки. При использовании меток времени для отметок времени нулевая точка зависит от контекста, поэтому Vega-Lite не будет пытаться определить ее для вас.
Для ваших данных я, вероятно, подхожу к ней следующим образом:
- Используйте аргумент
parse
в ваших данных, чтобы указать ожидаемый формат ваших временных меток, как в исходном вопросе - Используйте преобразование
timeUnit
, чтобы вручную вычислить соответствующую нулевую точку для ваших данных: здесь yearmonthdate
timeUnit работает хорошо, потому что он убирает часы, минуты и секунды. - Используйте кодировку
y2
в своей полосе, чтобы указать эту нулевую точку для своей отметки.
В совокупности результат может выглядеть примерно так ( Vega Editor ):
{
"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"
}