Канал size

Семантика канала size в декларативной модели

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

В рамках декларативной модели визуализации size выступает как отображение (encoding) поля данных в параметр масштаба mark-элемента. Это отображение всегда проходит через функцию масштабирования (scale), которая преобразует исходные значения данных в визуальные размеры на экране.

В Vega канал size является более фундаментальным: он может задаваться как свойство mark, управляться через scales напрямую и комбинироваться с transform-операциями, влияющими на распределение визуальных величин.


Основные типы визуальных размеров

Канал size в Vega-Lite не является универсальным числом — его поведение зависит от типа mark.

Точечные маркеры (point, circle, square)

Для точек size чаще всего интерпретируется как площадь символа, а не его радиус. Это критически важный момент, поскольку линейное масштабирование радиуса приводит к искажённому восприятию данных.

  • size → площадь точки (area in pixels²)
  • визуальный радиус вычисляется как √size

Такой подход обеспечивает более корректное восприятие относительных значений.

Линейные маркеры (line)

Для линий size интерпретируется как толщина линии (stroke width). Здесь масштабирование линейное:

  • size → strokeWidth в пикселях

Геометрические маркеры (rect, bar)

Для прямоугольников size часто не используется напрямую, так как размеры задаются через width/height и позиционные каналы (x, y). Однако в некоторых конфигурациях size может влиять на толщину или вторичные визуальные свойства.


Механизм масштабирования size

Каждое поле, связанное с каналом size, проходит через scale-функцию:

data value → scale → visual size (pixels)

Scale определяет, как числовые данные преобразуются в визуальные размеры. В Vega-Lite используются несколько типов шкал:

  • linear
  • log
  • sqrt
  • pow
  • quantile (в дискретных случаях)

Особое значение имеет sqrt-scale, применяемая для точечных диаграмм. Она компенсирует восприятие площади, так как человеческое зрение воспринимает площадь нелинейно.


Нелинейность восприятия площади

Если использовать линейное отображение значения в площадь, визуальное сравнение становится искажённым. Например, объект с размером 100 будет восприниматься не как в 10 раз больший по радиусу, а как значительно более крупный.

Корректная модель:

  • значение → площадь
  • радиус = √(площадь / π)

В Vega-Lite это поведение встроено в стандартную интерпретацию size для circle и point marks.


Настройка диапазона size через scale.range

Канал size всегда связан с диапазоном допустимых визуальных значений:

"scale": {
  "range": [10, 200]
}

Для точек это означает диапазон площадей. Для линий — диапазон толщин.

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


Дискретизация и биннинг в контексте size

При работе с непрерывными данными size может становиться нестабильным визуально. Поэтому часто применяется предварительное преобразование:

  • binning числовых значений
  • квантование (quantile)
  • логарифмирование

Пример логарифмической стабилизации:

size ∝ log(value)

Это особенно полезно при работе с распределениями с длинным хвостом (population, income, network traffic).


size и многомерное кодирование

Канал size часто используется совместно с другими визуальными каналами:

  • color → категориальная структура
  • x, y → позиционные измерения
  • size → количественная интенсивность
  • shape → тип объекта

Такое сочетание позволяет строить многомерные визуализации без перегрузки одного канала.

Однако перегрузка size несколькими смысловыми нагрузками недопустима: один mark должен иметь единую семантику размера.


Поведение size в различных mark-типах Vega-Lite

Circle / Point

  • size = area
  • scale важен для восприятия
  • рекомендуется sqrt-scale при непрерывных данных

Line

  • size = strokeWidth
  • линейное восприятие
  • log-scale используется редко

Area

Для area-chart size не используется напрямую, так как площадь задаётся через координаты и заполнение. Однако концептуально area уже является интегрированным размером.


Конфигурация size в Vega-Lite

Базовая структура encoding:

"encoding": {
  "size": {
    "field": "value",
    "type": "quantitative"
  }
}

С добавлением scale:

"encoding": {
  "size": {
    "field": "value",
    "type": "quantitative",
    "scale": {
      "type": "sqrt",
      "range": [5, 300]
    }
  }
}

Логика интерпретации size в Vega runtime

На уровне компиляции Vega Vega-Lite транслирует size в низкоуровневую спецификацию Vega:

  • field binding
  • scale definition
  • mark property assignment

В результате size становится функцией вида:

size = f(data, scale, config)

где f включает:

  • нормализацию
  • трансформацию шкалы
  • применение диапазона

Поведение легенды для size

Legend для size отображается как серия символов или линий, отражающих изменение величины.

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

  • для point marks: увеличивающиеся круги
  • для line marks: линии разной толщины
  • часто используется градуированная шкала

Legend играет роль интерпретатора канала, поскольку size сам по себе трудно воспринимается без опорных значений.


Типичные ошибки использования size

Линейное масштабирование площади вместо корня

Прямое отображение значения в радиус приводит к экспоненциальному визуальному росту объектов.

Перегрузка визуального пространства

Большие значения size перекрывают малые элементы, особенно в scatter plots.

Отсутствие нормализации

При смешанных диапазонах данных size становится доминирующим каналом, подавляя остальные визуальные переменные.

Использование size для категориальных данных

size не предназначен для категорий без смысловой количественной интерпретации.


Практика выбора диапазона size

Подбор range зависит от плотности данных:

  • плотные scatter plots: 5–50 px²
  • редкие данные: 20–300 px²
  • презентационные графики: расширенные диапазоны допустимы

Важно учитывать масштаб визуального холста и количество элементов.


size в связке с интерактивностью

В интерактивных визуализациях size часто используется как динамический канал:

  • увеличение при hover
  • выделение выбранных элементов
  • реакция на фильтры

Такая динамика требует дополнительной стабилизации, чтобы избежать визуального “дрожания” при изменении scale.


Математическая интерпретация канала size

Для точечных графиков:

visual_area = scale(value)
radius = sqrt(visual_area / π)

Для линейных графиков:

strokeWidth = scale(value)

Таким образом, size в Vega-Lite представляет собой не просто параметр отображения, а композицию функции восприятия и математического преобразования данных.


Поведение size при множественных сериях

При группировке данных (например, по цвету или серии) scale size может быть:

  • глобальным (shared scale)
  • локальным (per-series scale)

Глобальная шкала обеспечивает сравнимость, локальная — детализацию внутри группы.


Влияние конфигурации на size

Глобальные настройки Vega-Lite могут переопределять поведение size:

  • конфигурации mark defaults
  • scale defaults
  • theme overrides

Это позволяет централизованно управлять визуальной плотностью графиков без изменения отдельных encoding-блоков.


size как канал выразительности

Канал size является одним из ключевых механизмов передачи количественных различий в визуализации. Его эффективность определяется корректным выбором шкалы, диапазона и соответствием типу mark-элемента.

В композиции визуальных каналов size часто выполняет роль вторичного усилителя структуры данных, подчёркивая значимые различия без необходимости увеличения числа визуальных переменных.