Вы можете группировать по неделям, используя monthdate
timeUnit с размером шага 7:
"timeUnit": {"unit": "monthdate", "step": 7}
Например:
{
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"data": {"url": "data/seattle-temps.csv"},
"mark": "line",
"encoding": {
"x": {"timeUnit": {"unit": "yearmonthdate", "step": 7}, "field": "date", "type": "temporal"},
"y": {"aggregate": "mean", "field": "temp", "type": "quantitative"}
}
}
![enter image description here](https://i.stack.imgur.com/g1gU0.png)
Обратите внимание, однако, что это начинается с новой недели в начале каждого месяца, что означает, что если вы делаете тепловую карту по дням недели и неделям, есть пробелы:
{
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"data": {"url": "data/seattle-temps.csv"},
"mark": "rect",
"encoding": {
"y": {"timeUnit": "day", "field": "date", "type": "ordinal"},
"x": {"timeUnit": {"unit": "yearmonthdate", "step": 7}, "field": "date", "type": "ordinal"},
"color": {"aggregate": "mean", "field": "temp", "type": "quantitative"}
}
}
![enter image description here](https://i.stack.imgur.com/BiG6l.png)
Если вы хотите более детальный контроль над началом недель, к сожалению, это невозможно выразить как timeUnit, но вы можете воспользоваться полным преобразованием Vega-Lite синтаксис для создания более индивидуальных агрегатов. Например, здесь мы вычисляем неделю года путем подсчета воскресений в данных:
{
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"data": {"url": "data/seattle-temps.csv"},
"transform": [
{"timeUnit": "yearmonthdate", "field": "date", "as": "date"},
{
"aggregate": [{"op": "mean", "field": "temp", "as": "temp"}],
"groupby": ["date"]
},
{"calculate": "day(datum.date) == 0", "as": "sundays"},
{
"window": [{"op": "sum", "field": "sundays", "as": "week"}],
"sort": "date"
}
],
"mark": "rect",
"encoding": {
"y": {"timeUnit": "day", "field": "date", "type": "ordinal", "title": "Day of Week"},
"x": {"field": "week", "type": "ordinal", "title": "Week of year"},
"color": {"aggregate": "mean", "field": "temp", "type": "quantitative"}
}
}
![enter image description here](https://i.stack.imgur.com/PciOK.png)