Time Units Example
Summary statistics for U.S. flight data, interactively grouped by time unit. This example demonstrates the use of the timeunit
transform, in conjunction with the timeSequence
and timeUnitSpecifier
expression functions, to flexibly process and format date-time data.
Vega JSON Specification <>
{
"$schema": "https://vega.github.io/schema/vega/v5.json",
"description": "A bar chart of flight statistics, aggregated by the selected time unit.",
"width": 600,
"height": 300,
"padding": 5,
"autosize": {"type": "fit", "resize": true, "contains": "padding"},
"title": {
"text": "U.S. Flight Statistics",
"subtitle": "20k Sample, January - March 2001",
"subtitleFontStyle": "italic",
"frame": "group",
"anchor": "start",
"offset": 10
},
"signals": [
{
"name": "timeunit", "value": ["day"],
"bind": {"input": "select", "options": [
["year"], ["month"], ["date"], ["day"], ["hours"]
]}
},
{
"name": "measure", "value": "delay",
"bind": {"input": "select", "options": ["count", "delay"]}
},
{
"name": "title",
"update": "measure == 'delay' ? 'Average Delay (min)' : 'Number of Flights'"
}
],
"data": [
{
"name": "flights",
"url": "data/flights-20k.json",
"format": {"type": "json", "parse": "auto"},
"transform": [
{
"type": "timeunit",
"field": "date",
"units": {"signal": "timeunit"},
"signal": "tbin"
},
{
"type": "aggregate",
"groupby": ["unit0"],
"ops": ["count", "average"],
"fields": [null, "delay"],
"as": ["count", "delay"]
}
]
}
],
"scales": [
{
"name": "xscale",
"type": "band",
"range": "width",
"padding": 0.05,
"round": true,
"domain": {"signal": "timeSequence(tbin.unit, tbin.start, tbin.stop)"}
},
{
"name": "yscale",
"type": "linear",
"range": "height",
"domain": {"data": "flights", "field": {"signal": "measure"}},
"zero": true,
"nice": true
}
],
"axes": [
{ "orient": "bottom", "scale": "xscale",
"formatType": "time", "format": {"signal": "timeUnitSpecifier(tbin.units, {hours: '%H'})"} },
{ "orient": "left", "scale": "yscale", "tickCount": 7,
"title": {"signal": "title"} }
],
"marks": [
{
"type": "rect",
"from": {"data": "flights"},
"encode": {
"update": {
"x": {"scale": "xscale", "field": "unit0"},
"width": {"scale": "xscale", "band": 1},
"y": {"scale": "yscale", "field": {"signal": "measure"}},
"y2": {"scale": "yscale", "value": 0},
"fill": {"value": "steelblue"},
"tooltip": {"signal": "{timeunit: timeFormat(datum.unit0, timeUnitSpecifier(tbin.units)), count: format(datum.count, ',') + ' flights', delay: format(datum.delay, '.1f') + ' min (avg)'}"}
},
"hover": {
"fill": {"value": "firebrick"}
}
}
}
]
}