В визуализации категориальных данных часто требуется не просто
отобразить значения, а показать их состав внутри
группы. Для этого используется стековое (stacked)
представление, при котором отдельные значения накладываются друг на
друга по оси, формируя суммарную структуру. В Vega-Lite это управляется
через механизм stack, который определяет, как именно
агрегированные значения распределяются по координатам.
Стекирование применяется, когда несколько значений относятся к одной группе и должны быть визуально сложены.
Типичный сценарий:
Без стека каждая серия отображается независимо. Со стеком значения суммируются по оси, образуя слоистую структуру.
Во многих случаях Vega-Lite включает стекирование автоматически, если:
mark: "bar" или
mark: "area"color,
detail или columnПример логики:
x — категорияy — числовое значениеcolor — серияВ этом случае Vega-Lite интерпретирует данные как кандидата на стековую визуализацию.
Ключевым механизмом управления является свойство:
stackОно может принимать несколько значений:
"zero" — стандартное стекование от нуля"center" — центрированное стекование (streamgraph)null — отключение стекованияСтекирование от нулевой линии является наиболее распространённым вариантом. Оно формирует привычные stacked bar chart и stacked area chart.
Поведение:
Характерные свойства:
Центрированное стекование используется для построения потоковых диаграмм (streamgraph).
Механизм:
Особенности:
Явное отключение стекования используется, когда:
При stack: null:
{
"mark": "bar",
"encoding": {
"x": { "field": "month", "type": "ordinal" },
"y": {
"field": "value",
"type": "quantitative",
"stack": "zero"
},
"color": { "field": "category" }
}
}
В этом примере стекование явно закреплено за осью y, что
определяет поведение всей диаграммы.
Vega-Lite позволяет управлять тем, какая ось участвует в стековании.
Это определяется положением stack внутри encoding
канала:
yxЛогика зависит от ориентации:
Порядок слоёв напрямую влияет на результат визуализации.
Если не задан order, Vega-Lite использует:
colorЯвное управление осуществляется через:
sort внутри encodingorderНеправильный порядок может привести к искажению интерпретации,
особенно при использовании stack: "center".
Стекирование тесно связано с агрегацией данных.
Типичная комбинация:
aggregate: "sum"groupby через x и colorПри этом стекирование работает поверх уже агрегированных значений.
Важно различать:
При наличии отрицательных чисел стекование становится неоднозначным.
Vega-Lite обрабатывает это следующим образом:
При этом:
Для mark: "area" стекирование играет особую роль.
При stack: "zero":
При stack: "center":
При stack: null:
При использовании фасетирования (facet) стекование
применяется отдельно в каждой панели.
Особенности:
Это важно для корректного сравнения групп.
Стекирование тесно связано с масштабом осей.
При stack: "zero":
При stack: null:
Это влияет на:
Явное управление стеком применяется для предотвращения автоматических решений Vega-Lite.
Ключевые сценарии:
Стекирование происходит после этапа трансформаций данных:
Это означает:
Vega-Lite применяет стекование только при определённых условиях:
Если условия не выполняются: