Позиционные каналы: x, y, x2, y2

x и y: базовые позиционные каналы

В Vega-Lite позиционные каналы x и y формируют основу практически любой визуализации, определяя геометрию размещения графических примитивов на координатной плоскости. Эти каналы задают соответствие между полями данных и пространственными координатами, а затем преобразуются через масштабирование (scale) в пиксельные значения.

Канал x отвечает за горизонтальное положение, y — за вертикальное. В зависимости от типа визуализации они могут интерпретироваться как:

  • непрерывные числовые координаты;
  • категории (ordinal / nominal);
  • временные значения (temporal).

Ключевой принцип заключается в том, что Vega-Lite не работает с пиксельными координатами напрямую. Вместо этого используется декларативное описание:

{
  "data": { "url": "data.csv" },
  "mark": "point",
  "encoding": {
    "x": { "field": "height", "type": "quantitative" },
    "y": { "field": "weight", "type": "quantitative" }
  }
}

Здесь height и weight отображаются в двумерное пространство, а система автоматически подбирает шкалы и диапазоны отображения.


Масштабирование и преобразование координат

Каждый позиционный канал связан с масштабом (scale), который преобразует значения данных в экранные координаты. Для x и y применяются независимые шкалы:

  • линейные (linear) — для количественных данных;
  • временные (time) — для дат и временных меток;
  • порядковые (band / point) — для категорий;
  • логарифмические (log) — для экспоненциальных распределений.

Пример явного задания шкалы:

{
  "encoding": {
    "x": {
      "field": "date",
      "type": "temporal",
      "scale": { "type": "time" }
    },
    "y": {
      "field": "value",
      "type": "quantitative",
      "scale": { "type": "linear" }
    }
  }
}

Контекст применения x и y в различных mark-типах

Поведение каналов зависит от геометрического примитива:

  • point — точечное отображение пары значений (x, y)
  • line — последовательное соединение точек по x
  • area — заполненная область под кривой
  • 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" }
  }
}

Это позволяет строить визуализации диапазонов без предварительной подготовки данных, включая:

  • min/max интервалы;
  • квартильные диапазоны;
  • error bars.

Позиционные каналы в многослойных композициях

В layered-структурах x, y, x2, y2 часто распределяются между слоями:

  • один слой — основная линия или точки;
  • другой слой — диапазоны (confidence bands);
  • третий слой — маркеры или аннотации.
{
  "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 расширяют эту систему, добавляя возможность выражать не точечные, а интервальные и площадные структуры данных, превращая двумерную плоскость в универсальное пространство для представления как дискретных, так и непрерывных диапазонов.