В системах визуализации Vega и Vega-Lite термин padding относится к управлению внутренними и внешними отступами области отрисовки графика. Эти параметры влияют не на данные, а на геометрию размещения визуальных элементов внутри SVG/Canvas-контейнера.
Padding используется в двух различных уровнях:
padding — отступы всей визуализации от
границ viewport;paddingInner и
paddingOuter — управление распределением пространства
внутри дискретных шкал (band/point).Эти механизмы решают разные задачи и не взаимозаменяемы.
Глобальный padding задаёт внутренние поля между границей
визуализации и областью построения графика.
{
"padding": 20
}
или расширенная форма:
{
"padding": {
"top": 10,
"bottom": 20,
"left": 30,
"right": 40
}
}
Визуализация в Vega-Lite состоит из:
padding определяет, сколько пространства оставляется
между внешним контейнером и внутренней компоновкой.
При padding: 0 оси могут быть прижаты к краям SVG, а
подписи обрезаться.
При увеличении padding:
В Vega-Lite padding участвует в вычислении финального размера сцены:
final_width = width + padding.left + padding.right
final_height = height + padding.top + padding.bottom
Где width и height — это область данных
(plot area).
При этом Vega может дополнительно учитывать:
В отличие от глобального padding, параметры paddingInner
и paddingOuter относятся к шкалам
(scales), прежде всего:
bandpointОни определяют распределение пространства между категориями на оси.
Band scale делит ось на равные сегменты под категории:
|---A---|---B---|---C---|
Но реальное отображение зависит от двух параметров:
paddingInner задаёт долю пространства между элементами
шкалы.
0 ≤ paddingInner < 1
{
"encoding": {
"x": {
"field": "category",
"type": "ordinal",
"scale": {
"type": "band",
"paddingInner": 0.2
}
}
}
}
paddingOuter управляет отступами по краям шкалы — до
первого и после последнего элемента.
0 ≤ paddingOuter ≤ 1
{
"encoding": {
"x": {
"field": "category",
"type": "ordinal",
"scale": {
"type": "band",
"paddingOuter": 0.3
}
}
}
}
Оба параметра работают совместно в расчёте ширины band-scale:
available_space = total_size * (1 - paddingOuter * 2)
band_width = available_space / (n + paddingInner * (n - 1))
Где:
В Vega-Lite столбчатые диаграммы используют band-scale:
{
"mark": "bar",
"encoding": {
"x": {
"field": "group",
"type": "ordinal",
"scale": {
"paddingInner": 0.15,
"paddingOuter": 0.2
}
},
"y": {
"field": "value",
"type": "quantitative"
}
}
}
Параметры paddingInner и paddingOuter напрямую определяют:
При изменении размеров контейнера:
| Характеристика | padding | paddingInner | paddingOuter |
|---|---|---|---|
| Уровень | layout | scale | scale |
| Влияет на оси | да | нет | нет |
| Влияет на интервалы данных | нет | да | да |
| Изменяет координаты | нет | косвенно | косвенно |
| Основная задача | компоновка | плотность категорий | внешние отступы шкалы |
В Vega:
view.paddingВ Vega-Lite:
encoding.scaleПсихологически padding влияет на:
Меньший padding → данные воспринимаются как более «сжатые» Больший padding → данные воспринимаются как более «разделённые»
Padding часто работает совместно с:
width и heightstep (в band scales)axis.labelPaddingrangeStep (в Vega)Эти параметры формируют итоговую геометрию графика и могут усиливать или компенсировать эффекты paddingInner и paddingOuter.