x и y: базовые позиционные каналы
В Vega-Lite позиционные каналы x и y
формируют основу практически любой визуализации, определяя геометрию
размещения графических примитивов на координатной плоскости. Эти каналы
задают соответствие между полями данных и пространственными
координатами, а затем преобразуются через масштабирование (scale) в
пиксельные значения.
Канал x отвечает за горизонтальное положение,
y — за вертикальное. В зависимости от типа визуализации они
могут интерпретироваться как:
Ключевой принцип заключается в том, что Vega-Lite не работает с пиксельными координатами напрямую. Вместо этого используется декларативное описание:
{
"data": { "url": "data.csv" },
"mark": "point",
"encoding": {
"x": { "field": "height", "type": "quantitative" },
"y": { "field": "weight", "type": "quantitative" }
}
}
Здесь height и weight отображаются в
двумерное пространство, а система автоматически подбирает шкалы и
диапазоны отображения.
Масштабирование и преобразование координат
Каждый позиционный канал связан с масштабом (scale), который
преобразует значения данных в экранные координаты. Для x и
y применяются независимые шкалы:
Пример явного задания шкалы:
{
"encoding": {
"x": {
"field": "date",
"type": "temporal",
"scale": { "type": "time" }
},
"y": {
"field": "value",
"type": "quantitative",
"scale": { "type": "linear" }
}
}
}
Контекст применения x и y в различных mark-типах
Поведение каналов зависит от геометрического примитива:
point — точечное отображение пары значений (x, y)line — последовательное соединение точек по xarea — заполненная область под кривойbar — прямоугольники с базовой линиейВ случае line важен порядок значений по x,
который может задаваться сортировкой:
{
"mark": "line",
"encoding": {
"x": { "field": "time", "type": "temporal" },
"y": { "field": "price", "type": "quantitative" }
}
}
Категориальные оси и дискретизация
Когда x или y имеют тип
nominal или ordinal, система использует
дискретные шкалы. Это приводит к равномерному распределению категорий по
оси.
{
"mark": "bar",
"encoding": {
"x": { "field": "category", "type": "nominal" },
"y": { "field": "amount", "type": "quantitative" }
}
}
В таком случае ось x превращается в набор фиксированных
позиций, а ширина столбцов определяется параметрами
bandSize.
Расширение позиционного пространства: x2 и y2
Каналы x2 и y2 вводят вторую точку для
определения диапазона. Вместо одиночного значения задаётся интервал:
x + x2 — горизонтальный отрезокy + y2 — вертикальный отрезокЭто критически важно для визуализаций, где данные имеют границы.
Диапазоны на оси x: интервалы и прямоугольники
Простейшее применение x2 — отображение диапазона
значений по горизонтали:
{
"mark": "bar",
"encoding": {
"x": { "field": "start", "type": "quantitative" },
"x2": { "field": "end" },
"y": { "field": "category", "type": "nominal" }
}
}
Каждая запись формирует горизонтальный бар, где:
start задаёт левую границуend задаёт правую границуВертикальные диапазоны через y2
Аналогично, y2 задаёт вертикальную протяжённость:
{
"mark": "rect",
"encoding": {
"y": { "field": "low", "type": "quantitative" },
"y2": { "field": "high" },
"x": { "field": "category", "type": "nominal" }
}
}
Такой подход используется для:
Прямоугольные примитивы и совместное использование x2 и y2
Наиболее полное использование всех четырёх каналов возникает в
rect, где задаются обе координаты диапазонов:
x — левая границаx2 — правая границаy — нижняя границаy2 — верхняя граница{
"mark": "rect",
"encoding": {
"x": { "field": "x_start", "type": "quantitative" },
"x2": { "field": "x_end" },
"y": { "field": "y_start", "type": "quantitative" },
"y2": { "field": "y_end" }
}
}
Такое представление используется для:
Семантика отсутствующих значений x2 и y2
Если x2 или y2 не указаны, Vega-Lite
применяет поведенческие правила:
bar — используется базовая линия (обычно 0)area — используется предыдущее значение по осиrect — геометрия считается неполной и требует обоих
концовВажно учитывать, что интерпретация зависит от типа mark и контекста трансформаций данных.
Связь x2/y2 с агрегированными данными
При использовании агрегации x2 и y2 часто
задаются через разные агрегаты одного поля:
{
"encoding": {
"x": { "aggregate": "min", "field": "value" },
"x2": { "aggregate": "max", "field": "value" },
"y": { "field": "category", "type": "nominal" }
}
}
Это позволяет строить визуализации диапазонов без предварительной подготовки данных, включая:
Позиционные каналы в многослойных композициях
В layered-структурах x, y, x2, y2 часто распределяются между слоями:
{
"layer": [
{
"mark": "line",
"encoding": {
"x": { "field": "t", "type": "temporal" },
"y": { "field": "value", "type": "quantitative" }
}
},
{
"mark": "area",
"encoding": {
"x": { "field": "t" },
"y": { "field": "low" },
"y2": { "field": "high" }
}
}
]
}
Роль x и y в композиции визуального пространства
Совместная работа x и y определяет систему
координат, в которой:
Каналы x2 и y2 расширяют эту систему,
добавляя возможность выражать не точечные, а интервальные и площадные
структуры данных, превращая двумерную плоскость в универсальное
пространство для представления как дискретных, так и непрерывных
диапазонов.