В спецификации Vega-Lite объект encoding определяет соответствие между данными и визуальными каналами графика. Он является центральной частью декларативного описания визуализации и задаёт, каким образом поля данных преобразуются в геометрические примитивы, цвета, размеры, позиции и подписи.
Структурно encoding представляет собой словарь, где ключи — это визуальные каналы, а значения — объекты или примитивные определения, описывающие способ отображения данных.
Основные принципы:
Базовая форма объекта encoding:
{
"encoding": {
"x": { ... },
"y": { ... },
"color": { ... },
"size": { ... }
}
}
Каждое свойство внутри encoding называется channel definition (определение канала).
Простейшая форма канала:
"x": {
"field": "sales",
"type": "quantitative"
}
Расширенная форма:
"x": {
"field": "date",
"type": "temporal",
"timeUnit": "year",
"axis": { "title": "Год" },
"scale": { "type": "linear" }
}
Каналы x и y определяют координаты в декартовой системе.
x обычно отвечает за горизонтальную ось, y — за вертикальную.
"x": { "field": "category", "type": "nominal" },
"y": { "field": "value", "type": "quantitative" }
Особенности:
Канал color задаёт визуальное кодирование через цвет.
"color": {
"field": "region",
"type": "nominal"
}
Функциональные возможности:
Пример числового цвета:
"color": {
"field": "profit",
"type": "quantitative",
"scale": { "scheme": "blues" }
}
Канал size управляет размером геометрического примитива.
"size": {
"field": "population",
"type": "quantitative"
}
Используется в:
Особенности:
Канал shape используется для задания формы маркеров.
"shape": {
"field": "type",
"type": "nominal"
}
Ограничения:
Каналы row и column используются для разбиения визуализации на подграфики.
"row": { "field": "country", "type": "nominal" },
"column": { "field": "year", "type": "temporal" }
Особенности:
Канал tooltip задаёт содержимое всплывающих подсказок.
"tooltip": [
{ "field": "name", "type": "nominal" },
{ "field": "value", "type": "quantitative" }
]
Особенности:
Канал text определяет текстовые подписи.
"text": {
"field": "label",
"type": "nominal"
}
Используется в:
Каждый канал в encoding описывается объектом ChannelDef.
Основные поля:
Имя поля из набора данных.
"field": "revenue"
Особенности:
Определяет тип шкалы данных:
"type": "quantitative"
Тип влияет на:
Позволяет выполнять агрегацию данных.
"aggregate": "sum"
Распространённые значения:
Пример:
"y": {
"field": "sales",
"aggregate": "sum",
"type": "quantitative"
}
Используется для разбиения числовых данных на интервалы.
"bin": true
Расширенный вариант:
"bin": {
"maxbins": 20
}
Особенности:
Применяется к временным данным для извлечения компонентов даты.
"timeUnit": "yearmonth"
Примеры:
Объект scale определяет преобразование данных в визуальные координаты.
"scale": {
"type": "linear"
}
Основные параметры:
Пример цветовой шкалы:
"scale": {
"scheme": "category10"
}
Настройка осей координат.
"axis": {
"title": "Продажи",
"grid": true
}
Возможности:
Управление легендой.
"legend": {
"title": "Регион"
}
Параметры:
Определяет сортировку данных внутри канала.
"sort": "ascending"
Расширенный вариант:
"sort": {
"field": "value",
"order": "descending"
}
Фиксированное значение вместо привязки к данным.
"color": {
"value": "red"
}
Особенности:
Позволяет задавать условное кодирование.
"color": {
"condition": {
"test": "datum.value > 100",
"value": "red"
},
"value": "blue"
}
Механизм:
Порядок интерпретации каналов подчиняется строгой иерархии:
Это разделение обеспечивает предсказуемость визуального результата независимо от сложности encoding.
Некоторые каналы допускают массив значений или условные конструкции.
Пример tooltip с несколькими полями:
"tooltip": [
{ "field": "name", "type": "nominal" },
{ "field": "value", "type": "quantitative" },
{ "field": "date", "type": "temporal" }
]
Такая структура позволяет формировать комплексные информационные панели без изменения геометрии графика.
encoding всегда интерпретируется совместно с определением mark:
Связь между mark и encoding определяет семантику визуализации, но не изменяет структуру самого encoding объекта.
encoding поддерживает комбинирование каналов для многомерного отображения данных:
Такая композиция формирует многослойное представление данных без необходимости императивного управления отрисовкой.