В band-шкалах Vega и Vega-Lite параметр align определяет
смещение набора равномерных полос (band) внутри доступного диапазона
шкалы. Он влияет на то, как распределяются категории по оси при
использовании дискретного отображения данных, особенно в сочетании с
rangeStep или автоматически вычисляемым шагом.
Ключевая идея: align управляет
горизонтальным (или вертикальным) сдвигом всей сетки band-значений
внутри диапазона шкалы без изменения их ширины.
Band-шкала преобразует категориальные значения в интервалы фиксированной ширины. Каждый элемент данных получает:
step)paddingInner,
paddingOuter)При этом весь набор band-значений может быть выровнен внутри общего диапазона координат.
alignПараметр align принимает значение в диапазоне от
0 до 1:
Фактически align задаёт коэффициент смещения всей
band-сетки относительно начала координатной области.
Если диапазон шкалы задан как [min, max], а ширина
набора band-значений меньше полного диапазона, то:
(max - min - totalBandWidth) * alignИзменение align особенно заметно в следующих
случаях:
rangeStep вместо фиксированного
диапазонаalign: 0 — столбцы «прижаты» к началу осиalign: 0.5 — столбцы визуально центрированыalign: 1 — столбцы смещены к концу осиrangeStepВ Vega-Lite band-шкалы часто используют rangeStep,
который задаёт фиксированный шаг между категориями.
При наличии rangeStep:
stepalign регулирует, как распределяется оставшееся
пространствоБез rangeStep (например, при
range: "width"):
align всё равно влияет на смещение, но эффект менее
очевиденpaddingInner и paddingOuteralign работает совместно с параметрами отступов:
paddingInner — расстояние между категориями внутри
шкалыpaddingOuter — отступы по краям диапазонаИх комбинация формирует итоговую структуру распределения:
paddingOuter определяет базовый «воздух» по краямpaddingInner регулирует плотность категорийalign смещает всю структуру внутри оставшегося
пространстваПри этом:
paddingOuter уменьшает визуальный эффект
alignpaddingInner смещение становится менее
заметным{
"data": {
"values": [
{"category": "A", "value": 28},
{"category": "B", "value": 55},
{"category": "C", "value": 43}
]
},
"mark": "bar",
"encoding": {
"x": {
"field": "category",
"type": "nominal",
"scale": {
"type": "band",
"align": 0.5,
"paddingInner": 0.2,
"paddingOuter": 0.1
}
},
"y": {
"field": "value",
"type": "quantitative"
}
}
}
В этом случае распределение категорий центрируется внутри доступной ширины, создавая визуально сбалансированную композицию.
{
"encoding": {
"x": {
"field": "category",
"type": "nominal",
"scale": {
"type": "band",
"align": 0,
"paddingInner": 0.1,
"paddingOuter": 0.2
}
}
}
}
Категории прижимаются к началу оси, а свободное пространство остаётся справа.
{
"encoding": {
"x": {
"field": "category",
"type": "nominal",
"scale": {
"type": "band",
"align": 1,
"paddingInner": 0.1,
"paddingOuter": 0.2
}
}
}
}
Категории смещаются к правому краю, свободное пространство концентрируется слева.
При динамическом количестве категорий эффект align
меняется нелинейно:
align стремится к нулюpaddingInner → 0) смещение
становится почти незаметнымalign одинаково работает для обеих ориентаций:
x scale) смещение происходит по
горизонталиy scale) смещение происходит по
вертикалиЭто позволяет выравнивать визуальные блоки диаграмм в сложных компоновках, например:
align используется не как инструмент «красоты», а как
механизм управления плотностью и балансом композиции:
align вместо корректировки
paddingOuter0 или 1)
без учёта контекста композицииalign с поведением
domain или rangerangeStep, приводящее к
непредсказуемому визуальному смещениюПри отсутствии явного задания align используется
значение, обеспечивающее визуально сбалансированное распределение
(обычно 0.5), что соответствует центрированию band-группы
внутри доступного диапазона.