bandPosition — параметр шкалы (scale) в Vega и
Vega-Lite, определяющий относительное положение визуального элемента
внутри диапазона (band) для дискретных шкал типа band,
point и производных.
Шкала типа band делит доступное пространство оси на равные сегменты,
соответствующие категориям. Каждый сегмент (band) имеет внутреннюю
область, и bandPosition управляет тем, в какой точке этого
сегмента будут размещаться графические примитивы, привязанные к
шкале.
Ключевая характеристика:
0 до
1Для шкалы типа band каждая категория отображается как интервал:
|------ band 1 ------|------ band 2 ------|------ band 3 ------|
Каждый band имеет локальную систему координат:
bandPosition задаёт точку внутри этого интервала:
0 — начало band0.5 — центр band1 — конец bandЕсли:
i — индекс категорииbandWidth — ширина одного bandstep — шаг шкалыbp — bandPositionто позиция элемента вычисляется как:
x = scale(i) + bp * bandWidth
где scale(i) — начало соответствующего band.
В Vega и Vega-Lite значение по умолчанию:
bandPosition = 0.5
Это означает центрирование элементов внутри band.
Такое поведение используется для:
Для bar-графиков bandPosition влияет на
горизонтальное или вертикальное смещение полосы внутри категории.
Пример эффекта:
0 — бар прижат к началу категории0.5 — бар центрирован1 — бар прижат к концу категории{
"mark": "bar",
"encoding": {
"x": { "field": "category", "type": "ordinal", "axis": { "labelAngle": 0 } },
"y": { "field": "value", "type": "quantitative" }
},
"config": {
"scale": {
"bandPosition": 0
}
}
}
Для tick и rule значение
bandPosition критично, поскольку эти элементы не заполняют
весь band, а обозначают конкретную точку.
rule часто используется для средних значений или осевых
линийtick — для отметок внутри категорий{
"mark": "tick",
"encoding": {
"x": { "field": "category", "type": "ordinal" },
"y": { "field": "value", "type": "quantitative" }
},
"config": {
"scale": {
"bandPosition": 0.5
}
}
}
Для точечных диаграмм bandPosition определяет, где
именно внутри категории располагается точка.
При bandPosition = 0.5 достигается визуальная центровка
и симметрия распределения.
bandPosition тесно связан с параметрами:
paddingInnerpaddingOuterЭти параметры изменяют размер band и отступы между ними, а
bandPosition определяет локальное положение внутри уже
скорректированного band.
Иерархия вычисления:
bandPositionВ Vega часто встречается параметр align, особенно в
scale конфигурациях.
align влияет на распределение band относительно всей
осиbandPosition влияет на позицию внутри каждого bandСравнение:
| Параметр | Область действия | Эффект |
|---|---|---|
| align | вся шкала | сдвиг всех band |
| bandPosition | отдельный band | позиция внутри band |
В Vega-Lite bandPosition задаётся через
config.scale.
{
"data": {
"values": [
{ "category": "A", "value": 28 },
{ "category": "B", "value": 55 },
{ "category": "C", "value": 43 }
]
},
"mark": "bar",
"encoding": {
"x": { "field": "category", "type": "ordinal" },
"y": { "field": "value", "type": "quantitative" }
},
"config": {
"scale": {
"bandPosition": 0.2
}
}
}
При таком значении все бары смещаются к началу категориального интервала.
В сложных визуализациях, где на одной оси находятся несколько типов
mark, bandPosition используется для выравнивания:
Типичный сценарий:
0.5)1 или
0)Для band scale ширина элемента часто определяется автоматически:
mark.width ≈ bandWidth
При этом bandPosition не изменяет ширину, а только
смещает anchor point.
Следствие:
Для point scale (где нет ширины band как интервала),
bandPosition интерпретируется как дополнительный offset
внутри шага между точками.
Это делает поведение менее очевидным:
0.5 точки равномерно центрированыПри использовании категориальной оси:
bandPosition влияет только на marksЭто приводит к необходимости согласованной настройки:
Grid линии и reference rules часто используют шкалу с
bandPosition = 0.5, чтобы:
При изменении bandPosition может возникать:
В stacked bar charts bandPosition влияет только на
горизонтальное положение всей стопки внутри band, но не изменяет
внутреннюю структуру stacking.
Это означает:
Для всех дискретных шкал:
bandPosition является универсальным механизмом тонкой
настройки визуального выравнивания.
| Значение | Поведение |
|---|---|
| 0 | прижатие к началу band |
| 0.25 | лёгкий сдвиг к началу |
| 0.5 | центрирование |
| 0.75 | сдвиг к концу |
| 1 | прижатие к концу band |
При изменении размера контейнера:
bandPosition остаётся постояннымЭто обеспечивает стабильность композиции при масштабировании визуализации.