Структура объекта axis

Объект axis в Vega и Vega-Lite определяет поведение и визуальное представление координатных осей в графиках. Он управляет геометрией шкалы, подписями, делениями, линиями сетки и стилевыми параметрами, формируя один из ключевых слоёв визуализации данных. Структура axis является декларативной: вместо императивного описания логики отрисовки задаётся набор свойств, интерпретируемых движком рендеринга.

Базовая структура объекта axis включает набор свойств, определяющих положение, внешний вид и форматирование элементов оси.

orient Определяет расположение оси относительно графика. Возможные значения:

  • "top"
  • "bottom"
  • "left"
  • "right"

В Vega-Lite ориентация часто выводится автоматически на основе типа шкалы, однако при необходимости может быть переопределена вручную.

scale Связывает ось с конкретной шкалой (scale). Значение представляет собой имя шкалы, определённой в разделе scales. Через эту привязку ось получает домен и диапазон значений.

zindex Управляет порядком наложения элементов. Значение определяет, будет ли ось отрисована поверх графика или под ним. Это важно при пересечении с геометрическими примитивами.

Геометрия и структура оси

domain Логическое значение, определяющее отображение линии домена (основной линии оси). При true линия отображается, при false скрывается.

domainColor Задаёт цвет линии домена. Поддерживаются любые CSS-совместимые цветовые значения, включая hex, rgb и именованные цвета.

domainWidth Толщина линии домена в пикселях. Используется для визуального выделения оси относительно других элементов.

offset Смещение оси относительно стандартного положения. Позволяет управлять пространственным расположением без изменения компоновки всей сцены.

Деления и разметка

ticks Управляет отображением делений на оси. Значение может быть:

  • логическим (включить/выключить)
  • числом (количество делений)
  • объектом конфигурации

При объектной форме доступны расширенные параметры:

  • size — длина делений
  • color — цвет линий делений
  • opacity — прозрачность

tickSize Устаревший или упрощённый способ задания длины делений. В современных спецификациях заменяется объектной конфигурацией ticks.

tickCount Рекомендуемое количество делений. Реальное значение может корректироваться движком в зависимости от масштаба и доступного пространства.

tickMinStep Минимальный шаг между делениями. Используется для предотвращения перегруженности оси при плотных данных.

Подписи и форматирование

labels Управляет отображением текстовых подписей делений. Может быть логическим значением или объектом конфигурации.

Основные параметры объекта labels:

  • angle — угол поворота текста
  • align — горизонтальное выравнивание
  • baseline — вертикальное выравнивание
  • color — цвет текста
  • font — семейство шрифта
  • fontSize — размер шрифта
  • limit — ограничение длины текста с обрезкой

format Строка форматирования значений оси. Поддерживает форматирование чисел и дат в зависимости от типа шкалы.

Примеры поведения:

  • числовые шкалы: формат фиксированной точности (.2f)
  • временные шкалы: форматы дат (%Y-%m-%d)

formatType Определяет механизм форматирования:

  • "number"
  • "time"
  • "string"

Используется для явного указания интерпретации значений.

encode Расширенный механизм кастомизации, позволяющий переопределять визуальные свойства через сигналы Vega. Через encode можно управлять отдельными состояниями элементов оси: ticks, labels, domain.

Сетка и вспомогательные линии

grid Включает отображение линий сетки, соответствующих делениям оси. Используется для улучшения читаемости значений на графике.

gridColor Цвет линий сетки. Обычно используется с низкой насыщенностью для ненавязчивого отображения.

gridOpacity Прозрачность сетки, позволяющая регулировать визуальную доминанту.

gridWidth Толщина линий сетки.

gridDash Пунктирный стиль линий сетки, задаётся массивом чисел (например [4,2]).

Заголовки осей

title Текст заголовка оси. Может быть строкой или объектом конфигурации.

При объектной форме доступны свойства:

  • text — содержимое заголовка
  • font — шрифт
  • fontSize — размер
  • color — цвет
  • anchor — выравнивание относительно оси

titleAngle Угол поворота заголовка.

titleOffset Расстояние между заголовком и основной осью.

titlePadding Внутренний отступ заголовка относительно элементов оси.

Ограничение и поведение элементов

labelLimit Ограничивает максимальную ширину подписи в пикселях. При превышении текста применяется обрезка с многоточием.

labelOverlap Стратегия обработки перекрытия подписей. Возможные значения:

  • "true" — автоматическое скрытие части подписей
  • "false" — отображение всех подписей
  • "parity" — отображение через одну
  • "greedy" — агрессивное сокращение

minExtent / maxExtent Ограничивают минимальное и максимальное пространство, занимаемое осью. Используются в системах компоновки для балансировки графика.

Позиционирование и привязка

position Определяет логическое положение оси внутри визуального контейнера. Используется в сложных композициях с несколькими панелями.

translate Дополнительное смещение оси по координатам. Применяется в низкоуровневом Vega API.

Интервалы и вычисление делений

values Явное задание значений делений оси. Полностью отключает автоматическое вычисление tick-значений.

Используется для:

  • категориальных шкал
  • фиксированных временных интервалов
  • пользовательских наборов меток

nice Логическое значение, влияющее на округление границ шкалы. При включении диапазон значений корректируется до «красивых» чисел.

Визуальные стили

labelColor Цвет подписей оси.

labelFont Шрифт подписей.

labelFontSize Размер текста подписей.

labelFontWeight Толщина шрифта.

tickColor Цвет делений.

tickWidth Толщина делений.

tickOpacity Прозрачность делений.

Поведение при масштабировании

Ось тесно связана с системой scale, поэтому её поведение изменяется в зависимости от типа шкалы:

  • linear — равномерные интервалы
  • logarithmic — логарифмическое распределение делений
  • time — временная шкала с адаптивным форматированием
  • band/ordinal — категориальные значения

В Vega-Lite многие параметры axis автоматически адаптируются под тип шкалы, включая форматирование подписей и генерацию делений.

Различия Vega и Vega-Lite в структуре axis

В Vega-Lite axis является частью декларативной спецификации более высокого уровня. Многие свойства задаются через упрощённые конфигурации:

  • axis: true/false — включение/выключение
  • объект axis — настройка параметров
  • глобальные конфиги config.axis

В Vega (низкоуровневый API) axis описывается более детально через компоненты axes, encode, scale и сигналы. Это даёт полный контроль над каждым визуальным элементом, включая состояние взаимодействия.

Наследование конфигурации

Axis поддерживает многоуровневую систему наследования:

  1. Глобальный config.axis
  2. Локальная конфигурация в конкретной оси
  3. Переопределения через encode

При конфликте приоритет отдаётся наиболее специфичному уровню.

Поведение при интерактивности

Хотя axis сам по себе не является интерактивным элементом, он участвует в:

  • hover-подсветке через encode
  • синхронизации с tooltip
  • реакциях на zoom/pan (через scale трансформации)

В таких сценариях axis динамически пересчитывает деления и подписи в зависимости от текущего состояния шкалы.