Оси

Оси показывают пространственное отображение значений шкалы с помощью делений, линий сетки и подписей. Сейчас Vega поддерживает оси в декартовой (прямоугольной) системе координат. Как и шкалы, оси можно задавать на верхнем уровне спецификации или внутри группового примитива.

Свойства оси

Свойства для настройки координатной оси.

Свойство Тип Описание
scale String Обязательно. Имя шкалы, на основе которой строится ось.
orient String Обязательно. Расположение оси. См. справочник по расположению осей.
bandPosition Number Доля интервала, задающая положение делений оси для шкал band. Значение 0 размещает деления у левого края полос, 0.5 — посередине.
domain Boolean Показывать ли линию оси, соответствующую области определения шкалы (по умолчанию true).
domainCap String Форма окончания линии оси: "butt" (по умолчанию), "round" или "square". ≥ 5.11
domainColor Color Цвет линии оси.
domainDash Number[ ] Штриховой узор линии оси; [] задаёт сплошную линию. ≥ 5.0
domainDashOffset Number Смещение начала штрихового узора линии оси в пикселях. ≥ 5.0
domainOpacity Number Непрозрачность линии оси. ≥ 4.1
domainWidth Number Толщина линии оси.
encode       Object Необязательные кодировки примитивов для настройки оформления оси. Поддерживаются блоки axis, ticks, grid, labels, title и domain. См. пользовательские кодировки оси.
format String | TimeMultiFormat Шаблон форматирования подписей оси. Для чисел используется допустимый спецификатор d3-format, для даты и времени — спецификатор d3-time-format или объект TimeMultiFormat.
formatType String Тип форматирования ("number", "time", "utc") для шкал без строго заданного типа данных области определения. Полезен при форматировании дат и времени для шкал band и point. Если задан, свойство format должно содержать подходящий для выбранного типа шаблон. Поддерживается ≥ 5.1; поддержка UTC — ≥ 5.8.
grid Boolean Показывать ли линии сетки (по умолчанию false).
gridCap String Форма окончания линий сетки: "butt" (по умолчанию), "round" или "square". ≥ 5.11
gridColor Color Цвет линий сетки.
gridDash Number[ ] Штриховой узор линий сетки; [] задаёт сплошные линии.
gridDashOffset Number Смещение начала штрихового узора линий сетки в пикселях. ≥ 5.0
gridOpacity Number Непрозрачность линий сетки.
gridScale String Имя шкалы, используемой для линий сетки. По умолчанию применяется та же шкала, что и для делений и подписей.
gridWidth Number Толщина линий сетки.
labels Boolean Показывать ли подписи оси (по умолчанию true).
labelAlign String Выравнивание текста подписей по горизонтали; переопределяет значение по умолчанию для текущего расположения оси.
labelAngle Number Угол поворота подписей оси в градусах.
labelBaseline String Вертикальное положение базовой линии подписей; переопределяет значение по умолчанию для текущего расположения оси. Варианты: alphabetic, top, middle, bottom, line-top и line-bottom. По умолчанию базовая линия зависит от расположения оси: top для нижней оси, bottom для верхней и middle для вертикальных осей. Значения line-top и line-bottom ≥ 5.10 действуют подобно top и bottom, но учитывают lineHeight, а не только fontSize.
labelBound Boolean | Number Скрывать ли подписи, выходящие за пределы оси. При false (по умолчанию) выход за границы не проверяется. При true подпись скрывается, если выступает за пределы оси более чем на 1 пиксель. Число задаёт допустимое выступание ограничивающего прямоугольника в пикселях.
labelColor Color Цвет текста подписей оси.
labelFlush Boolean | Number Выравнивать ли подписи у начала и конца оси по краям диапазона шкалы. Число задаёт пороговое расстояние в пикселях до края; при true используется порог 1 пиксель. Для горизонтальной оси начальная подпись выравнивается влево, конечная — вправо. Для вертикальной оси используются нижняя и верхняя базовые линии текста.
labelFlushOffset Number Дополнительное смещение выровненных по краю подписей в пикселях (по умолчанию 0). Например, 2 сдвигает их на 2 пикселя от центра оси и помогает зрительно связать подписи с делениями.
labelFont String Название шрифта подписей оси.
labelFontSize Number Размер шрифта подписей оси.
labelFontStyle String Начертание шрифта подписей, например normal или italic. ≥ 5.0
labelFontWeight String | Number Насыщенность шрифта подписей.
labelLimit Number Максимальная длина подписей оси в пикселях.
labelLineHeight Number Высота строки в пикселях для многострочных подписей или подписей с базовой линией "line-top" либо "line-bottom". ≥ 5.10
labelOffset Number Дополнительное к tickOffset смещение подписей в пикселях. ≥ 5.10
labelOpacity Number Непрозрачность подписей оси. ≥ 4.1
labelOverlap Boolean | String Способ устранения наложения подписей. При false (по умолчанию) подписи не удаляются. Значение true или "parity" убирает каждую вторую подпись; это удобно для обычных линейных осей. Значение "greedy" последовательно просматривает подписи и убирает те, что перекрывают последнюю оставленную; такой способ часто лучше подходит для логарифмических осей.
labelPadding Number Отступ между подписями и делениями в пикселях.
labelSeparation Number Минимальное расстояние между ограничивающими прямоугольниками подписей, при котором они не считаются перекрывающимися (по умолчанию 0). Учитывается только при включённом устранении наложений через labelOverlap. ≥ 5.0
minExtent Number | Value Минимальный размер области делений и подписей оси в пикселях. Определяет минимальное смещение заголовка оси.
maxExtent Number | Value Максимальный размер области делений и подписей оси в пикселях. Определяет максимальное смещение заголовка оси.
offset Number | Value Смещение оси в пикселях перпендикулярно краю диаграммы.
position Number | Value Положение точки привязки оси в пикселях (по умолчанию 0). Для горизонтальных осей с расположением top или bottom задаёт координату x группы оси, а для вертикальных осей с расположением left или right — координату y.
ticks Boolean Показывать ли деления оси (по умолчанию true).
tickBand String Расположение делений для шкал band: "center" (по умолчанию) размещает их посередине полосы, "extent" — на её границах. Это свойство может переопределять bandPosition, tickExtra и tickOffset. ≥ 5.8
tickCap String Форма окончания делений: "butt" (по умолчанию), "round" или "square". ≥ 5.11
tickColor Color Цвет делений оси.
tickCount Number | String | Object Желаемое число делений на количественной оси. Фактическое число может отличаться, чтобы значения были удобными для чтения (кратными 2, 5 или 10) и попадали в область определения шкалы. Для шкал time и utc можно задать интервал строкой: "millisecond", "second", "minute", "hour", "day", "week", "month" или "year". Объект вида {"interval": "month", "step": 3} задаёт шаг в три месяца: деления появятся в начале каждого квартала (январь, апрель, июль, октябрь).
tickDash Number[ ] Штриховой узор делений; [] задаёт сплошные линии. ≥ 5.0
tickDashOffset Number Смещение начала штрихового узора делений в пикселях. ≥ 5.0
tickMinStep Number Минимальный желаемый шаг между делениями в единицах области определения шкалы. Например, 1 не допускает расстояния между делениями меньше единицы. При необходимости значение tickCount корректируется для соблюдения этого шага. ≥ 5.0
tickExtra Boolean Добавлять ли деление в начальной точке оси. Полезно для шкал band, когда деления должны стоять на границах полос, а не посередине. Используйте вместе с "bandPosition": 1 и "padding": 0 у соответствующей шкалы band.
tickOffset Number Смещение делений, подписей и линий сетки в пикселях.
tickOpacity Number Непрозрачность делений оси. ≥ 4.1
tickRound Boolean Округлять ли координаты делений в пикселях до ближайшего целого.
tickSize Number Длина делений в пикселях.
tickWidth Number Толщина делений в пикселях.
title String | String[ ] Заголовок оси (по умолчанию отсутствует). Начиная с версии ≥ 5.7, массив строк задаёт многострочный заголовок.
titleAnchor String Точка привязки заголовка: "start", "middle", "end" или null (по умолчанию, определяется автоматически). Например, при orient со значением "bottom" они соответствуют выравниванию слева, по центру и справа. Привязка определяется относительно диапазона шкалы оси. ≥ 5.0
titleAlign String Выравнивание заголовка по горизонтали: "left", "center" или "right". Переопределяет автоматическое выравнивание по titleAnchor.
titleAngle Number Угол поворота заголовка оси в градусах.
titleBaseline String Вертикальное положение базовой линии заголовка: alphabetic, top, middle, bottom, line-top или line-bottom. По умолчанию при стандартном размещении используется top для нижней оси и bottom для верхней и вертикальных осей. Значения line-top и line-bottom ≥ 5.10 действуют подобно top и bottom, но учитывают lineHeight, а не только fontSize.
titleColor Color Цвет текста заголовка оси.
titleFont String Название шрифта заголовка оси.
titleFontSize Number Размер шрифта заголовка оси.
titleFontStyle String Начертание шрифта заголовка, например normal или italic. ≥ 5.0
titleFontWeight String | Number Насыщенность шрифта заголовка оси.
titleLimit Number Максимальная длина заголовка оси в пикселях.
titleLineHeight Number Высота строки в пикселях для многострочного заголовка или заголовка с базовой линией "line-top" либо "line-bottom". ≥ 5.7
titleOpacity Number Непрозрачность заголовка оси. ≥ 4.1
titlePadding Number | Value Отступ между подписями и заголовком оси в пикселях.
titleX Number Пользовательская координата X заголовка относительно группы оси; переопределяет стандартное размещение.
titleY Number Пользовательская координата Y заголовка относительно группы оси; переопределяет стандартное размещение.
translate Number Смещение системы координат при размещении оси. По умолчанию ось сдвигается на 0.5 пикселя по X и Y, чтобы линии совпадали с пиксельной сеткой. Для векторного вывода такое выравнивание может быть нежелательным; тогда translate можно задать, например, равным нулю. ≥ 5.8
values Array Явно заданные значения видимых делений и подписей оси. Элементы массива должны быть допустимыми значениями области определения соответствующей шкалы.
zindex Number Целочисленный индекс слоя группы оси относительно других осей, примитивов и легенд. По умолчанию 0: оси и линии сетки рисуются позади примитивов того же уровня спецификации. При большем значении, например 1, они рисуются поверх примитивов.

Свойства доступности ≥ 5.11

При выводе SVG эти свойства определяют атрибуты ARIA, которые помогают вспомогательным технологиям описывать ось.

Свойство Тип Описание
aria Boolean Добавлять ли атрибуты ARIA (по умолчанию true; только для SVG). При false группе оси задаётся aria-hidden, и она исключается из дерева доступности ARIA.
description String Текстовое описание оси для доступности ARIA (только для SVG). Если aria равно true, это описание задаётся атрибутом aria-label. Если описание не указано, оно создаётся автоматически.

Темы и конфигурация

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

Расположение оси

Допустимые значения параметра orient.

Значение Описание
left Размещает ось Y вдоль левого края диаграммы.
right Размещает ось Y вдоль правого края диаграммы.
top Размещает ось X вдоль верхнего края диаграммы.
bottom Размещает ось X вдоль нижнего края диаграммы.

Пользовательские кодировки оси

С помощью параметра encode можно настраивать свойства примитивов всех элементов оси:

Каждый элемент принимает набор правил визуального кодирования, сгруппированных в объекты enter, update, exit и другие, как описано в разделе «Примитивы». Для оформления можно использовать стандартные ссылки на значения.

Каждый блок encode также может содержать строковое свойство name для уникального имени набора примитивов, логическое interactive для обработки событий ввода и строковое свойство style (или массив строк) для применения значений свойств по умолчанию. Если не указано иное, для заголовка используется стиль "guide-title", а для подписей — "guide-label".

Каждому делению, линии сетки и подписи соответствует объект данных со следующими полями. Их можно использовать в пользовательских правилах визуального кодирования:

  • label — текст подписи;
  • value — значение данных;
  • index — дробный индекс деления (0 для первого, 1 для последнего);
  • tickIndex — целочисленный индекс деления (0 для первого, затем увеличивается на 1 для каждого следующего). ≥ 6.3

В примере ниже показано, как задать собственные цвета, толщину линий, угол поворота текста и шрифты. Блок labels также делает подписи оси чувствительными к событиям ввода и меняет цвет текста при наведении указателя.

"axes": [
  {
    "orient": "bottom",
    "scale": "x",
    "title": "Ось X",
    "encode": {
      "ticks": {
        "update": {
          "stroke": {"value": "steelblue"}
        }
      },
      "labels": {
        "interactive": true,
        "update": {
          "text": {"signal": "format(datum.value, '+,')"},
          "fill": {"value": "steelblue"},
          "angle": {"value": 50},
          "fontSize": {"value": 14},
          "align": {"value": "left"},
          "baseline": {"value": "middle"},
          "dx": {"value": 3}
        },
        "hover": {
          "fill": {"value": "firebrick"}
        }
      },
      "title": {
        "update": {
          "fontSize": {"value": 16}
        }
      },
      "domain": {
        "update": {
          "stroke": {"value": "#333"},
          "strokeWidth": {"value": 1.5}
        }
      }
    }
  }
]

Для labels можно задать собственный текст через свойство "text". Например, порядковая шкала может служить таблицей соответствия между значениями оси и текстом её подписей.