Порядковая шкала (ordinal)

Порядковые шкалы (ordinal) используются для отображения дискретных значений, между которыми существует упорядоченность, но отсутствует непрерывная числовая интерпретация расстояний. В визуализации данных в Vega и Vega-Lite такие шкалы являются базовым механизмом преобразования категориальных доменов в визуальные свойства: позиции, цвета, размеры и другие графические параметры.

Порядковая шкала определяется отображением:

domain → range

где:

  • domain — набор категорий (строк, меток, идентификаторов)
  • range — набор визуальных значений (координаты, цвета, интервалы)

Формально это функция:

f: D → R, где D — упорядоченное множество категорий, R — дискретное или интервальное множество визуальных значений.

В отличие от линейных шкал, здесь отсутствует предположение о равных расстояниях между элементами домена.

Тип scale: ordinal в Vega-Lite

В спецификациях Vega-Lite порядковая шкала задаётся через:

{
  "mark": "bar",
  "encoding": {
    "x": {
      "field": "category",
      "type": "ordinal",
      "scale": { "type": "ordinal" }
    },
    "y": {
      "field": "value",
      "type": "quantitative"
    }
  }
}

Здесь type: "ordinal" в канале кодирования указывает, что данные категориальны с упорядоченной структурой, а scale.type задаёт способ их визуального отображения.

Домены и их упорядочивание

Домены в ordinal-шкалах могут формироваться автоматически или задаваться явно.

Автоматическое формирование

По умолчанию порядок категорий определяется:

  • порядком появления в данных
  • или внутренней сортировкой движка

Однако такой подход часто приводит к нестабильной визуализации при изменении входных данных.

Явное задание domain

"scale": {
  "type": "ordinal",
  "domain": ["A", "B", "C", "D"]
}

Явное определение домена обеспечивает:

  • стабильность визуализации
  • контроль порядка категорий
  • согласованность между графиками

Range и визуальные стратегии

Порядковые шкалы поддерживают несколько типов диапазонов отображения.

Дискретные позиции

Наиболее распространённый вариант — отображение категорий на дискретные позиции:

"range": [0, 50, 100, 150]

Каждой категории соответствует фиксированное положение.

Band и point представления

В контексте Vega-Lite чаще используются производные режимы:

  • band — распределение категорий по полосам
  • point — отображение категорий как точек

Пример band-скалы:

{
  "x": {
    "field": "category",
    "type": "ordinal",
    "scale": {
      "type": "band",
      "padding": 0.1
    }
  }
}

Band-скала выделяет каждой категории отдельный интервал ширины, что критично для столбчатых диаграмм.

Padding и управление плотностью

Параметр padding регулирует расстояние между элементами:

  • paddingInner — расстояние между категориями
  • paddingOuter — отступы по краям
"scale": {
  "type": "band",
  "paddingInner": 0.2,
  "paddingOuter": 0.1
}

Меньшее значение padding приводит к более плотному размещению элементов, что увеличивает читаемость при большом количестве категорий.

Цветовые ordinal-шкалы

Ordinal-шкалы часто используются для цветов, где каждая категория получает уникальный оттенок.

"color": {
  "field": "category",
  "type": "nominal",
  "scale": {
    "type": "ordinal",
    "scheme": "tableau10"
  }
}

Особенности:

  • каждая категория отображается уникальным цветом
  • важна визуальная различимость
  • используются предопределённые схемы (tableau, category10 и др.)

Цветовые 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 в деталях

Характеристика band point
Пространство интервал точка
Подходит для bar charts scatter plots
Ширина фиксированная отсутствует
Плотность контролируемая padding высокая

Band-шкалы фактически являются расширением ordinal-модели с добавлением интервальной геометрии.

Поведение при изменении данных

Ordinal-шкалы чувствительны к составу домена:

  • добавление новой категории изменяет распределение range
  • удаление категорий сдвигает позиции
  • при автоматическом domain возможны визуальные скачки

Для стабильности используют фиксированный domain.

Интеграция с осями

При отображении на осях ordinal-шкалы формируют категориальные подписи:

  • подписи привязываются к центрам band-областей
  • возможна ротация меток при плотных данных
  • контролируется параметрами labelAngle, labelLimit

Оси в Vega-Lite автоматически адаптируются под ordinal-домены без необходимости числовой интерполяции.

Сравнение с другими типами шкал

Ordinal-шкалы занимают промежуточное положение между:

  • nominal — без порядка
  • quantitative — непрерывные числовые значения

Особенность ordinal состоит в наличии упорядоченности без метрической интерпретации расстояний. Это делает их критичными для данных:

  • рейтингов
  • стадий процессов
  • категорий времени (месяцы, дни недели)
  • уровней качества

Поведение в сложных композициях

В многоуровневых визуализациях ordinal-шкалы используются в:

  • facet-разбиениях
  • stacked bar charts
  • grouped encodings

Каждый уровень сохраняет независимый domain, что позволяет строить многомерные категориальные структуры без конфликтов масштабирования.