В спецификациях Vega-Lite и Vega оси координат являются центральным
механизмом интерпретации данных на визуализации. Поле axis
и его производные (axisX, axisY,
axisTop, axisBottom, axisLeft,
axisRight) формируют декларативный слой управления
отображением шкал, подписей, сетки и вспомогательных элементов,
связанных с координатными осями.
В Vega-Lite ось не задаётся как отдельный графический объект вручную.
Она автоматически создаётся на основе привязки канала данных к шкале
через encoding.
Ключевой механизм:
x → горизонтальная ось (X)y → вертикальная ось (Y)color, size, shape → не
создают оси напрямуюПри этом каждая ось генерируется автоматически, но может быть
переопределена через axis.
{
"mark": "bar",
"encoding": {
"x": { "field": "category", "type": "nominal", "axis": { "title": "Категория" } },
"y": { "field": "value", "type": "quantitative" }
}
}
Здесь axis является вложенной конфигурацией, управляющей
поведением конкретной оси.
axis в encodingaxis внутри канала encoding управляет
локальной настройкой оси, привязанной к конкретному полю данных.
Основные свойства:
"axis": {
"title": "Продажи"
}
"title": null"axis": {
"format": ".2f"
}
Используется d3-format синтаксис:
.2f — два знака после запятой~s — сокращённые числа (1k, 1M)% — проценты"axis": {
"grid": true
}
"axis": {
"labelAngle": -45
}
"axis": {
"tickCount": 5
}
В Vega-Lite оси могут конфигурироваться глобально через
axisX и axisY.
Применяется ко всем X-осям в визуализации:
"axisX": {
"labelAngle": -30,
"grid": false
}
Особенности:
axis у
xАналогично для вертикальной оси:
"axisY": {
"title": "Значение",
"grid": true
}
Часто используется для:
В более низкоуровневом Vega оси задаются явно и имеют пространственную привязку.
Ось снизу графика:
{
"axes": [
{ "orient": "bottom", "scale": "xscale" }
]
}
Характеристики:
Ось сверху:
{
"axes": [
{ "orient": "top", "scale": "xscale" }
]
}
Применение:
Левая вертикальная ось:
{
"axes": [
{ "orient": "left", "scale": "yscale" }
]
}
Особенности:
Правая вертикальная ось:
{
"axes": [
{ "orient": "right", "scale": "yscale" }
]
}
Используется для:
Ось в Vega/Vega-Lite всегда привязана к шкале (scale),
которая определяет преобразование данных:
Пример:
"y": {
"field": "value",
"type": "quantitative",
"scale": { "type": "log" },
"axis": { "title": "Логарифмическая шкала" }
}
Ось здесь отображает не данные напрямую, а результат преобразования шкалы.
Глобальные настройки осей задаются через
config.axis:
{
"config": {
"axis": {
"labelFontSize": 12,
"titleFontSize": 14,
"domainColor": "#ccc"
}
}
}
Это влияет на все оси, если не переопределено локально.
axisaxisX / axisY — глобальные переопределенияaxesorient"axis": {
"labelAngle": -45,
"labelLimit": 100
}
"axis": {
"format": "%Y-%m",
"tickCount": 6
}
"axis": {
"grid": true,
"format": "~s"
}
При сложных визуализациях:
resolve: { axis: { x: "shared" } } объединяет ихresolve: { axis: { y: "independent" } } разделяет
шкалыПорядок формирования:
Ось всегда является производной от шкалы, а не наоборот.
Если данные отсутствуют:
Ось отображает:
"scale": {
"domain": [0, 100],
"range": "width"
}
Ось визуализирует именно отображаемый диапазон, а не исходные данные напрямую.
"axis": {
"domain": false,
"ticks": false,
"labels": false
}
Позволяет полностью отключить компоненты оси при сохранении шкалы.
Оси в Vega/Vega-Lite представляют собой слой отображения над шкалой, включающий:
Их поведение определяется не отдельной процедурной логикой, а декларативной связкой данных, шкал и визуальных правил.