Поле concat в Vega-Lite используется для
последовательного объединения нескольких независимых спецификаций в
единую композицию. Оно позволяет располагать графики в виде сетки по
строкам или столбцам, сохраняя при этом автономность каждого
подграфика.
Базовая идея concat заключается в том, что каждая
вложенная спецификация остаётся полноценной визуализацией со своими
данными, масштабами и осями.
{
"data": {"url": "data.csv"},
"concat": [
{
"mark": "bar",
"encoding": {
"x": {"field": "category", "type": "nominal"},
"y": {"field": "value", "type": "quantitative"}
}
},
{
"mark": "line",
"encoding": {
"x": {"field": "category", "type": "nominal"},
"y": {"field": "value", "type": "quantitative"}
}
}
]
}
Каждый элемент массива concat размещается слева направо.
Это удобно для сравнения разных типов визуализации одного и того же
набора данных.
Вертикальное расположение достигается добавлением вложенных объектов:
{
"vconcat": [
{
"mark": "line",
"encoding": {
"x": {"field": "date", "type": "temporal"},
"y": {"field": "price", "type": "quantitative"}
}
},
{
"mark": "area",
"encoding": {
"x": {"field": "date", "type": "temporal"},
"y": {"field": "volume", "type": "quantitative"}
}
}
]
}
concat и его специализированные формы
(vconcat, hconcat) представляют базовый
механизм композиции без семантической зависимости между графиками.
Поле facet в Vega-Lite используется для автоматического
разбиения одного набора данных на несколько подграфиков по значению
выбранного поля. В отличие от concat, где визуализации
задаются вручную, facet формирует их динамически на основе
данных.
{
"data": {"url": "data.csv"},
"facet": {
"row": {"field": "region", "type": "nominal"}
},
"spec": {
"mark": "bar",
"encoding": {
"x": {"field": "category", "type": "nominal"},
"y": {"field": "value", "type": "quantitative"}
}
}
}
Здесь создаётся набор одинаковых графиков, каждый из которых
соответствует отдельному значению region.
{
"facet": {
"row": {"field": "region", "type": "nominal"},
"column": {"field": "year", "type": "temporal"}
},
"spec": {
"mark": "line",
"encoding": {
"x": {"field": "month", "type": "ordinal"},
"y": {"field": "value", "type": "quantitative"}
}
}
}
Такое разбиение создаёт матрицу графиков, где строки и столбцы определяются двумя независимыми измерениями.
Поле repeat в Vega-Lite позволяет автоматически
дублировать одну и ту же визуализацию для нескольких полей данных. В
отличие от facet, который делит строки, repeat
изменяет само поле данных внутри одной и той же спецификации.
{
"data": {"url": "data.csv"},
"repeat": {
"column": ["sales", "profit", "cost"]
},
"spec": {
"mark": "line",
"encoding": {
"x": {"field": "date", "type": "temporal"},
"y": {"field": {"repeat": "column"}, "type": "quantitative"}
}
}
}
Каждая колонка становится отдельным графиком, где меняется только
поле y.
{
"repeat": {
"row": ["temperature", "humidity"]
},
"spec": {
"mark": "area",
"encoding": {
"x": {"field": "time", "type": "temporal"},
"y": {"field": {"repeat": "row"}, "type": "quantitative"}
}
}
}
{
"repeat": {
"row": ["a", "b"],
"column": ["x", "y"]
},
"spec": {
"mark": "point",
"encoding": {
"x": {"field": {"repeat": "column"}, "type": "quantitative"},
"y": {"field": {"repeat": "row"}, "type": "quantitative"}
}
}
}
Формируется сетка графиков, где каждая ячейка соответствует комбинации полей.
В Vega (data visualization grammar) и Vega-Lite поддерживаются
комбинированные структуры, где concat, facet и
repeat могут использоваться совместно.
{
"concat": [
{
"facet": {
"row": {"field": "group", "type": "nominal"}
},
"spec": {
"mark": "bar",
"encoding": {
"x": {"field": "category", "type": "nominal"},
"y": {"field": "value", "type": "quantitative"}
}
}
},
{
"mark": "line",
"encoding": {
"x": {"field": "date", "type": "temporal"},
"y": {"field": "value", "type": "quantitative"}
}
}
]
}
{
"facet": {
"row": {"field": "segment", "type": "nominal"}
},
"spec": {
"repeat": {
"column": ["metric1", "metric2"]
},
"spec": {
"mark": "line",
"encoding": {
"x": {"field": "time", "type": "temporal"},
"y": {"field": {"repeat": "column"}, "type": "quantitative"}
}
}
}
}
Такие комбинации позволяют строить сложные аналитические панели без выхода за пределы декларативного описания.
При использовании concat, facet и
repeat ключевым аспектом становится управление
масштабами:
В facet чаще применяется частичная синхронизация, так
как сравнение между группами требует единых шкал.
repeat используется для одновременного отображения
KPI:
Каждый показатель строится на общей временной оси.
facet применяется для сегментации:
concat используется для объединения:
facet с большим числом категорий может приводить к
экспоненциальному росту DOM-элементовrepeat увеличивает количество вычислений масштабов при
каждом изменении данныхconcat требует ручного контроля согласованности
осейОптимизация обычно достигается через:
concat, facet и repeat
формируют базовый слой композиционной модели в Vega-Lite. Они
определяют: