В Vega-Lite композиция визуализаций является ключевым механизмом построения сложных дашбордов и аналитических представлений из набора простых графиков. Вместо создания единого перегруженного графика используется принцип модульной сборки, где отдельные визуальные блоки объединяются в структурированные макеты.
Наиболее универсальными средствами композиции выступают
concat, hconcat, vconcat и
параметр columns, влияющий на раскладку повторяемых
представлений.
Конкатенация в Vega-Lite представляет собой объединение нескольких независимых визуальных спецификаций в единую композицию. Каждый элемент остаётся автономной визуализацией со своими осями, масштабами и преобразованиями данных.
Горизонтальное объединение размещает графики в одну строку:
{
"hconcat": [
{
"mark": "bar",
"encoding": {
"x": {"field": "category", "type": "nominal"},
"y": {"field": "value", "type": "quantitative"}
},
"data": {"url": "data.json"}
},
{
"mark": "line",
"encoding": {
"x": {"field": "date", "type": "temporal"},
"y": {"field": "value", "type": "quantitative"}
},
"data": {"url": "data.json"}
}
]
}
Каждый элемент массива интерпретируется как самостоятельная визуализация. Общей шкалы осей по умолчанию не предполагается, что позволяет сравнивать различные представления одного набора данных.
Вертикальная компоновка используется для последовательного размещения графиков сверху вниз:
{
"vconcat": [
{
"mark": "area",
"encoding": {
"x": {"field": "time", "type": "temporal"},
"y": {"field": "value", "type": "quantitative"}
}
},
{
"mark": "rule",
"encoding": {
"y": {"field": "threshold", "type": "quantitative"},
"color": {"value": "red"}
}
}
]
}
Вертикальная структура применяется для временных рядов, где верхний график отображает основную динамику, а нижние — дополнительные индикаторы, пороги или производные показатели.
concat представляет собой обобщённую форму композиции,
позволяющую автоматически располагать элементы в двумерной сетке. В
отличие от hconcat и vconcat, не фиксируется
направление размещения, а используется гибридная раскладка.
{
"concat": [
{
"mark": "bar",
"encoding": {
"x": {"field": "a", "type": "nominal"},
"y": {"field": "v1", "type": "quantitative"}
}
},
{
"mark": "bar",
"encoding": {
"x": {"field": "a", "type": "nominal"},
"y": {"field": "v2", "type": "quantitative"}
}
},
{
"mark": "bar",
"encoding": {
"x": {"field": "a", "type": "nominal"},
"y": {"field": "v3", "type": "quantitative"}
}
}
]
}
Такой подход используется при необходимости сравнения нескольких метрик в одинаковой структуре осей.
Конкатенация в Vega-Lite часто противопоставляется фасетированию и повторению:
concat объединяет независимые спецификацииfacet делит один набор данных по переменной и создаёт
подграфикиrepeat копирует одну спецификацию с разными полямиВажное отличие заключается в уровне контроля: concat
предоставляет максимальную свободу, так как каждый график описывается
отдельно.
Vega-Lite допускает комбинирование различных уровней композиции.
Например, concat может содержать внутри себя
facet, создавая сложные многослойные структуры.
{
"vconcat": [
{
"facet": {
"row": {"field": "region", "type": "nominal"}
},
"spec": {
"mark": "line",
"encoding": {
"x": {"field": "date", "type": "temporal"},
"y": {"field": "value", "type": "quantitative"}
}
}
},
{
"hconcat": [
{
"mark": "bar",
"encoding": {
"x": {"field": "category"},
"y": {"field": "value1"}
}
},
{
"mark": "bar",
"encoding": {
"x": {"field": "category"},
"y": {"field": "value2"}
}
}
]
}
]
}
Такие структуры применяются в аналитических панелях, где требуется одновременно отображать агрегированные и детализированные представления.
Параметр columns управляет количеством столбцов при
размещении повторяющихся визуализаций. Он используется в связке с
repeat, определяя сеточную структуру вывода.
{
"repeat": {
"column": ["v1", "v2", "v3", "v4"]
},
"spec": {
"mark": "bar",
"encoding": {
"x": {"field": "category", "type": "nominal"},
"y": {"field": {"repeat": "column"}, "type": "quantitative"}
}
}
}
По умолчанию элементы располагаются в одну строку, если не задан
параметр columns.
{
"repeat": {
"column": ["a", "b", "c", "d", "e", "f"]
},
"columns": 3,
"spec": {
"mark": "line",
"encoding": {
"x": {"field": "time"},
"y": {"field": {"repeat": "column"}}
}
}
}
При значении columns: 3 визуализации распределяются по
три элемента в строке, после чего начинается новая строка. Таким образом
формируется прямоугольная сетка.
Использование columns влияет не только на визуальную
структуру, но и на когнитивную нагрузку:
При этом каждая ячейка остаётся независимой визуализацией с собственными масштабами.
Комбинация конкатенации и параметра columns используется
для построения многоуровневых интерфейсов:
concat) формирует логические
блокиrepeat + columns)
создаёт сетки метрикПример типичной архитектуры:
vconcat
hconcatВ concat каждый элемент сохраняет независимые шкалы. Это
означает:
В repeat поведение аналогично, но при необходимости
возможно явное связывание масштабов через конфигурацию.
Используется набор hconcat для параллельного отображения
различных показателей с одинаковой осью X.
vconcat применяется для разделения:
repeat с columns формирует табличную
структуру визуализаций, где каждая ячейка соответствует отдельной
метрике.
При увеличении количества вложенных композиций:
Глубокие вложенности concat и repeat
требуют упрощения данных или агрегации перед визуализацией.
Композиционные операторы Vega-Lite образуют строгую иерархию:
repeat — генерация множества однотипных графиковfacet — разбиение данных по измерениюconcat / hconcat / vconcat —
ручная композиция визуализацийcolumns функционирует как параметр сеточной раскладки
внутри repeat, не являясь самостоятельным оператором
композиции.