Порядковые шкалы (ordinal) используются для отображения дискретных значений, между которыми существует упорядоченность, но отсутствует непрерывная числовая интерпретация расстояний. В визуализации данных в Vega и Vega-Lite такие шкалы являются базовым механизмом преобразования категориальных доменов в визуальные свойства: позиции, цвета, размеры и другие графические параметры.
Порядковая шкала определяется отображением:
domain → range
где:
Формально это функция:
f: D → R, где D — упорядоченное множество категорий, R — дискретное или интервальное множество визуальных значений.
В отличие от линейных шкал, здесь отсутствует предположение о равных расстояниях между элементами домена.
В спецификациях Vega-Lite порядковая шкала задаётся через:
{
"mark": "bar",
"encoding": {
"x": {
"field": "category",
"type": "ordinal",
"scale": { "type": "ordinal" }
},
"y": {
"field": "value",
"type": "quantitative"
}
}
}
Здесь type: "ordinal" в канале кодирования указывает,
что данные категориальны с упорядоченной структурой, а
scale.type задаёт способ их визуального отображения.
Домены в ordinal-шкалах могут формироваться автоматически или задаваться явно.
По умолчанию порядок категорий определяется:
Однако такой подход часто приводит к нестабильной визуализации при изменении входных данных.
"scale": {
"type": "ordinal",
"domain": ["A", "B", "C", "D"]
}
Явное определение домена обеспечивает:
Порядковые шкалы поддерживают несколько типов диапазонов отображения.
Наиболее распространённый вариант — отображение категорий на дискретные позиции:
"range": [0, 50, 100, 150]
Каждой категории соответствует фиксированное положение.
В контексте Vega-Lite чаще используются производные режимы:
Пример band-скалы:
{
"x": {
"field": "category",
"type": "ordinal",
"scale": {
"type": "band",
"padding": 0.1
}
}
}
Band-скала выделяет каждой категории отдельный интервал ширины, что критично для столбчатых диаграмм.
Параметр padding регулирует расстояние между
элементами:
paddingInner — расстояние между категориямиpaddingOuter — отступы по краям"scale": {
"type": "band",
"paddingInner": 0.2,
"paddingOuter": 0.1
}
Меньшее значение padding приводит к более плотному размещению элементов, что увеличивает читаемость при большом количестве категорий.
Ordinal-шкалы часто используются для цветов, где каждая категория получает уникальный оттенок.
"color": {
"field": "category",
"type": "nominal",
"scale": {
"type": "ordinal",
"scheme": "tableau10"
}
}
Особенности:
Цветовые ordinal-шкалы не предполагают градиентной интерпретации — переходы между значениями не имеют смысловой непрерывности.
Сортировка критически влияет на восприятие ordinal-шкал.
В Vega-Lite доступны стратегии:
"sort": "ascending"
Применяется для строковых значений.
"sort": "-y"
Категории упорядочиваются по связанному числовому полю.
"sort": ["low", "medium", "high"]
Используется для семантически значимых последовательностей.
Ordinal-шкалы являются основой для большинства категориальных визуализаций.
Категории отображаются по оси X:
"x": { "field": "product", "type": "ordinal" },
"y": { "field": "sales", "type": "quantitative" }
При комбинировании с detail или color
ordinal-шкалы формируют вложенные структуры:
| Характеристика | band | point |
|---|---|---|
| Пространство | интервал | точка |
| Подходит для | bar charts | scatter plots |
| Ширина | фиксированная | отсутствует |
| Плотность | контролируемая padding | высокая |
Band-шкалы фактически являются расширением ordinal-модели с добавлением интервальной геометрии.
Ordinal-шкалы чувствительны к составу домена:
Для стабильности используют фиксированный domain.
При отображении на осях ordinal-шкалы формируют категориальные подписи:
labelAngle,
labelLimitОси в Vega-Lite автоматически адаптируются под ordinal-домены без необходимости числовой интерполяции.
Ordinal-шкалы занимают промежуточное положение между:
Особенность ordinal состоит в наличии упорядоченности без метрической интерпретации расстояний. Это делает их критичными для данных:
В многоуровневых визуализациях ordinal-шкалы используются в:
Каждый уровень сохраняет независимый domain, что позволяет строить многомерные категориальные структуры без конфликтов масштабирования.