В Vega-Lite оси являются автоматически генерируемыми визуальными
компонентами, которые строятся на основе шкал (scales) и каналов
кодирования. Поле axis управляет внешним видом и поведением
осей непосредственно внутри описания конкретного канала, а глобальная
настройка через config.axis, config.axisX,
config.axisY позволяет задавать единые правила оформления
для всей спецификации.
Оси служат интерфейсным слоем между числовыми или категориальными данными и визуальным представлением. Их основная задача заключается в интерпретации шкал и предоставлении человеку читаемой структуры значений.
Ось в Vega-Lite:
При этом ось не задаётся явно как отдельный объект графа, а выводится
автоматически на основе привязки канала (x, y,
color, size и т.д.).
Каждое поле кодирования может содержать объект axis,
определяющий локальные параметры отображения.
{
"mark": "bar",
"encoding": {
"x": {
"field": "category",
"type": "ordinal",
"axis": {
"title": "Категории",
"labelAngle": -45
}
},
"y": {
"field": "value",
"type": "quantitative",
"axis": {
"title": "Значение",
"grid": true
}
}
}
}
В данном контексте axis управляет только конкретной
осью, не затрагивая остальные визуализации.
Параметр title определяет текстовое обозначение оси. Он
может быть отключён или переопределён:
null — скрытие заголовка"axis": {
"title": "Объём продаж"
}
grid управляет вспомогательными линиями, проходящими
через деления шкалы.
"axis": {
"grid": true
}
Сетка особенно полезна для количественных шкал, где требуется визуальное сопоставление значений.
labels контролирует отображение текстовых значений на
делениях оси.
"axis": {
"labels": true
}
Дополнительно используются параметры форматирования:
labelAngle — угол поворота подписейlabelLimit — максимальная длина текстаlabelPadding — отступ от осиlabelOverlap — стратегия устранения наложенийПараметр format позволяет задавать способ отображения
числовых и временных значений.
"axis": {
"format": ".2f"
}
Для временных шкал используется форматирование на основе d3-time-format:
"axis": {
"format": "%Y-%m"
}
Параметр tickCount управляет приблизительным количеством
делений.
"axis": {
"tickCount": 5
}
Также возможна явная фиксация значений:
"axis": {
"values": [0, 10, 20, 50, 100]
}
Ось включает несколько графических компонентов:
domain — основная линия осиticks — риски делений"axis": {
"domain": true,
"ticks": true
}
Их стилизация:
"axis": {
"domainColor": "#333",
"tickColor": "#666"
}
Ориентация задаётся автоматически, но может быть переопределена через
orient:
topbottomleftright"axis": {
"orient": "top"
}
Ориентация особенно важна при многослойных визуализациях и фасетах.
Для числовых данных оси строятся на основе диапазона значений:
Особенно важно взаимодействие с логарифмическими шкалами:
"scale": {
"type": "log"
}
В этом случае ось отображает экспоненциально распределённые значения.
Для временных данных ось адаптируется под календарную структуру:
"axis": {
"format": "%d %b"
}
Для категорий ось строится из дискретных значений:
Помимо локальных настроек, Vega-Lite поддерживает централизованную конфигурацию:
"config": {
"axis": {
"labelFontSize": 12,
"titleFontSize": 14,
"grid": false
}
}
Специализированные настройки:
axisX — только для горизонтальной осиaxisY — только для вертикальной осиaxisBand — для band-шкалaxisPoint — для point-шкал"config": {
"axisX": {
"labelAngle": -30
},
"axisY": {
"grid": true
}
}
Иерархия переопределений параметров осей:
encoding.<channel>.axisconfig.axisX / axisYconfig.axisЛокальные настройки всегда имеют приоритет над глобальными.
Ось может быть полностью отключена:
"axis": null
Также возможно частичное скрытие компонентов:
"axis": {
"labels": false,
"ticks": false,
"domain": false
}
Это часто используется в минималистичных визуализациях или в композиции слоёв.
При использовании layer или facet оси могут
пересекаться или дублироваться. Управление этим осуществляется
через:
resolve.axisresolve.scale"resolve": {
"axis": {
"x": "shared",
"y": "independent"
}
}
Такой подход позволяет объединять графики с различными шкалами без конфликтов визуальных элементов.
Оси поддерживают расширенные параметры оформления:
labelFonttitleFontlabelColortitleColorlabelFontSizetitleFontSize"axis": {
"labelFontSize": 11,
"titleFont": "sans-serif",
"labelColor": "#444"
}
Эти параметры позволяют согласовать оси с общей дизайн-системой визуализации.
При большом количестве данных оси автоматически применяют стратегии оптимизации:
"axis": {
"labelOverlap": "greedy"
}
При наличии пропусков в данных ось сохраняет целостность шкалы, но визуальные элементы могут быть разорваны. Управление этим поведением происходит на уровне шкалы, однако ось отражает результат через корректировку диапазона отображения.