В системах визуализации Vega и Vega-Lite шкалы типа band и point предназначены для работы с дискретными (категориальными) осями, где значения не образуют непрерывного числового диапазона. Эти шкалы формируют основу для построения столбчатых диаграмм, точечных графиков, группированных представлений и любых визуализаций, где данные представлены наборами категорий.
Дискретная шкала преобразует набор категорий в позиции на числовой оси. В отличие от линейных или логарифмических шкал, здесь отсутствует непрерывность: каждое значение домена соответствует отдельной позиции.
Основные характеристики:
В Vega-Lite основная настройка дискретной шкалы осуществляется через
параметр scale.type.
Шкала band распределяет категории по равномерным отрезкам (полосам), каждая из которых имеет фиксированную ширину. Это ключевой механизм для построения столбчатых диаграмм, где каждая категория занимает целую «полосу».
Формально:
[x, x + bandwidth]bandwidth вычисляется автоматическиХарактерные свойства:
bandwidth)paddingInner,
paddingOuter){
"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" }
},
"y": {
"field": "value",
"type": "quantitative"
}
}
}
В этом случае каждая категория получает собственную полосу, а столбец занимает всю доступную ширину внутри неё.
Определяет долю пространства между полосами относительно их ширины.
Определяет отступы по краям диапазона.
Управляет смещением полос внутри диапазона:
Одно из ключевых свойств band-шкалы — доступ к
bandwidth.
Он применяется для:
Пример концептуального использования:
bandwidthscale(category)Шкала point отображает категории в виде точечных позиций без выделения области ширины. Каждое значение домена получает одну координату.
В отличие от band:
bandwidthХарактерные особенности:
{
"data": { "values": [
{ "category": "A", "value": 28 },
{ "category": "B", "value": 55 },
{ "category": "C", "value": 43 }
] },
"mark": "point",
"encoding": {
"x": {
"field": "category",
"type": "nominal",
"scale": { "type": "point" }
},
"y": {
"field": "value",
"type": "quantitative"
}
}
}
Каждая категория размещается в одной координате без выделенной ширины.
| Сценарий | band | point |
|---|---|---|
| столбчатые диаграммы | да | нет |
| точечные графики | нет | да |
| группировка категорий | да | ограничено |
| ось с маркерами | редко | да |
Преобразование категории:
x = scale(category)
width = bandwidth
Где bandwidth вычисляется как:
bandwidth = (range_end - range_start) / domain_size - padding
(упрощённая модель)
Преобразование категории:
x = scale(category)
Дополнительно применяется центрирование:
x = x + step / 2
где step — расстояние между соседними категориями.
Регулирует плотность заполнения оси:
Padding влияет только на распределение точек, но не на их размер.
В Vega-Lite дискретные шкалы часто комбинируются:
Обе шкалы зависят от порядка категорий:
sortПример:
"scale": {
"type": "band",
"domain": ["C", "A", "B"]
}
Порядок напрямую влияет на визуальное расположение.
Дискретные шкалы не поддерживают интерполяцию в классическом смысле: