В спецификациях Vega-Lite и Vega источники данных могут задаваться
непосредственно внутри JSON-описания графика. Такой подход используется
через механизм inline values и представляет собой массив
объектов, включённых прямо в поле data.values.
Inline values представляют собой статический набор записей, встроенный в спецификацию визуализации. Каждая запись интерпретируется как объект с именованными полями, аналогичный строке таблицы данных.
Ключевые характеристики:
В Vega-Lite встроенные данные задаются следующим образом:
{
"data": {
"values": [
{ "category": "A", "value": 28 },
{ "category": "B", "value": 55 },
{ "category": "C", "value": 43 }
]
},
"mark": "bar",
"encoding": {
"x": { "field": "category", "type": "nominal" },
"y": { "field": "value", "type": "quantitative" }
}
}
Структурные особенности:
data.values — массив объектов;encoding;В Vega используется схожая концепция, но с более низкоуровневой структурой:
{
"data": [
{
"name": "table",
"values": [
{ "x": 1, "y": 28 },
{ "x": 2, "y": 55 },
{ "x": 3, "y": 43 }
]
}
]
}
Особенности реализации:
data;name;values является источником строк таблицы;data: "table" в
остальных частях спецификации.Каждый элемент массива представляет собой объект фиксированной схемы:
{ "field1": "value", "field2": 123, "field3": true }
Типичные формы значений:
Inline values напрямую связываются с каналами визуализации через encoding.
Пример распределения данных:
"data": {
"values": [
{ "month": "Jan", "sales": 120 },
{ "month": "Feb", "sales": 150 },
{ "month": "Mar", "sales": 90 }
]
},
"encoding": {
"x": { "field": "month", "type": "ordinal" },
"y": { "field": "sales", "type": "quantitative" }
}
Поведение системы:
Inline dataset может быть обработан без внешних источников.
"transform": [
{ "filter": "datum.sales > 100" }
]
"transform": [
{ "calculate": "datum.sales * 1.2", "as": "adjusted" }
]
"transform": [
{
"aggregate": [
{ "op": "sum", "field": "sales", "as": "totalSales" }
],
"groupby": ["month"]
}
]
Inline values при этом ведут себя идентично внешним источникам данных.
Встроенные данные не требуют явного описания схемы. Однако внутри Vega/Vega-Lite происходит автоматическое определение типов:
Ошибки типизации часто проявляются только на этапе отрисовки шкал.
Inline values имеют ограниченную переиспользуемость:
Практические ограничения:
В связке с JavaScript inline data часто формируется динамически:
const spec = {
data: {
values: Array.from({ length: 10 }, (_, i) => ({
x: i,
y: i * i
}))
},
mark: "line",
encoding: {
x: { field: "x", type: "quantitative" },
y: { field: "y", type: "quantitative" }
}
};
Особенности:
При построении сложных дашбордов inline data используется как:
Комбинации нескольких inline наборов реализуются через множественные
data блоки (в Vega) или через datasets и
resolve механизмы в расширенных конфигурациях.
При увеличении объёма inline values наблюдается:
Поэтому inline values концептуально ориентированы на малые и средние наборы данных.
Inline values усиливают декларативную природу Vega-Lite и Vega: