Vega-Lite использует систему декларативных спецификаций, в которой
каждая деталь визуализации описывается через JSON-структуру. Подписи
осей (axis labels) в этой модели являются частью описания масштаба и
отображения данных, а их поведение определяется набором параметров
форматирования, среди которых важное место занимают
labelFlush и labelPadding.
Визуальные подписи осей выполняют функцию интерпретации числовых или категориальных значений. В терминах Vega и Vega-Lite подписи являются частью компонента axis, который связывает scale и visual encoding.
Подписи формируют визуальную границу между областью данных (data rectangle) и внешним пространством графика. Их размещение напрямую влияет на:
Именно в этой зоне управления появляются параметры
labelFlush и labelPadding, регулирующие
геометрию текстовых элементов относительно края визуализации.
labelFlushПараметр labelFlush управляет выравниванием крайних
подписей оси относительно границ визуальной области. Его основная задача
— устранение ситуаций, когда первая или последняя подпись выходит за
пределы контейнера или визуально «прилипает» к краю.
При включённом labelFlush система пытается:
Если ось горизонтальная (X), то корректируется поведение первой и последней метки по ширине. Если вертикальная (Y), то корректируются верхняя и нижняя подписи.
Алгоритм поведения можно описать следующим образом:
labelFlush особенно заметен в следующих случаях:
При этом параметр не влияет на промежуточные подписи, что сохраняет регулярность сетки значений.
labelPaddingПараметр labelPadding определяет расстояние между
подписью оси и её визуальной линией (axis line) или делениями (ticks). В
отличие от labelFlush, он не связан с логикой обрезки, а
отвечает за визуальный комфорт и читаемость.
labelPadding задаёт фиксированное смещение текста
относительно базовой линии оси:
При изменении масштаба (scale):
Увеличение labelPadding приводит к:
Слишком большое значение вызывает:
labelFlush и labelPaddingОба параметра действуют на разные уровни системы отображения, но их совместное использование влияет на итоговую геометрию axis-компонента.
Внутренний порядок формирования оси можно представить так:
labelPadding как фиксированного
смещения;labelFlush при необходимости корректировки
крайних элементов.При разных комбинациях значений наблюдаются следующие паттерны:
малый padding + включённый flush крайние подписи корректируются минимально, плотность высокая;
большой padding + включённый flush увеличивается вероятность смещения оси внутрь, особенно при длинных метках;
flush отключён + большой padding возможен выход текста за пределы контейнера без корректировки;
flush включён + нулевой padding подписи максимально прижаты к оси, но остаются в пределах view.
Для категориальных данных labelFlush часто активируется
для первой и последней категории. Это особенно заметно при:
labelPadding в этом случае управляет вертикальным
«отрывом» текста от оси, формируя базовую читаемость.
На вертикальной оси:
labelFlush влияет на верхнюю и нижнюю метки
диапазона;labelPadding регулирует горизонтальное расстояние от
линии шкалы.Особенно критично это в случаях:
Для temporal-осей:
labelFlush предотвращает обрезку дат в начале и конце
временного интервала;labelPadding стабилизирует расстояние при изменении
формата даты (например, от YYYY к DD MMM).Оси в Vega-Lite являются частью layout-движка, где каждый элемент влияет на общий размер визуализации.
labelPadding напрямую участвует в расчёте:
labelFlush не увеличивает layout напрямую, но:
{
"mark": "bar",
"encoding": {
"x": { "field": "category", "type": "nominal" },
"y": { "field": "value", "type": "quantitative" }
},
"config": {
"axis": {
"labelPadding": 8
}
}
}
{
"config": {
"axisX": {
"labelFlush": true,
"labelPadding": 4
}
}
}
{
"config": {
"axisY": {
"labelFlush": true,
"labelPadding": 12
}
}
}
labelPadding,
labelFlush включён для предотвращения обрезки;labelPadding для
читаемости, labelFlush используется выборочно;При изменении размеров контейнера:
labelPadding остаётся фиксированным и может изменять
пропорции композиции;labelFlush пересчитывается на основе новых границ
viewport;В сложных графиках с несколькими осями:
Такая структура требует согласованного подхода к настройке, поскольку локальные изменения одного axis-компонента могут влиять на глобальную геометрию визуализации.