Оси
Оси показывают пространственное отображение значений шкалы с помощью делений, линий сетки и подписей. Сейчас 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 можно настраивать свойства примитивов всех элементов оси:
axis— группа оси;ticks— примитивы линий делений;grid— примитивы линий сетки;labels— текстовые примитивы подписей;title— текстовый примитив заголовка;domain— примитив линии оси.
Каждый элемент принимает набор правил визуального кодирования, сгруппированных в объекты 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". Например, порядковая шкала может служить таблицей соответствия между значениями оси и текстом её подписей.