Степенная шкала

Степенная шкала в визуализации данных в Vega и Vega-Lite представляет собой нелинейное преобразование числовой оси, основанное на степенной функции. Она используется для изменения распределения значений таким образом, чтобы подчеркнуть определённые диапазоны данных — малые, средние или большие значения — в зависимости от выбранного показателя степени.

Степенная шкала определяется функцией вида:

y = x^p

где:

  • x — исходное значение данных,
  • p — показатель степени,
  • y — преобразованное значение.

При p = 1 шкала становится линейной, при p > 1 усиливается вклад больших значений, при 0 < p < 1 — акцент смещается в сторону малых значений. В отличие от логарифмической шкалы, степенная не требует строго положительных значений, но чувствительна к области определения и может усиливать крайние значения при неправильной настройке.

Реализация в Vega и Vega-Lite

В системе декларативной визуализации Vega и Vega-Lite степенная шкала задаётся через тип pow.

Пример базовой конфигурации:

{
  "scales": [
    {
      "name": "xscale",
      "type": "pow",
      "domain": {"data": "table", "field": "value"},
      "range": "width",
      "exponent": 0.5
    }
  ]
}

В Vega-Lite аналогичная настройка:

{
  "mark": "point",
  "encoding": {
    "x": {
      "field": "value",
      "type": "quantitative",
      "scale": {
        "type": "pow",
        "exponent": 0.5
      }
    },
    "y": {
      "field": "category",
      "type": "nominal"
    }
  }
}

Параметр exponent является ключевым управляемым фактором поведения шкалы.

Параметр exponent и его влияние

Значение степени определяет характер трансформации:

  • exponent = 1 — линейное отображение без искажений
  • exponent > 1 — растяжение верхней части диапазона
  • 0 < exponent < 1 — сжатие больших значений и акцент на малых
  • exponent = 2 — квадратичное усиление роста значений
  • exponent = 0.5 — квадратный корень, часто используемый для визуального выравнивания распределений

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

Domain и range в контексте степенной шкалы

Степенная шкала сохраняет стандартную структуру Vega/Vega-Lite шкал, где:

  • domain задаёт входной диапазон данных
  • range задаёт диапазон отображения (например, пиксели оси)

Особенность степенной шкалы заключается в том, что преобразование применяется до маппинга в range, что означает изменение геометрического распределения точек.

Пример с явным domain:

{
  "type": "pow",
  "domain": [1, 1000],
  "range": [0, 500],
  "exponent": 0.3
}

При малых значениях exponent шкала сильно «сжимает» верхние диапазоны, делая нижние значения более различимыми.

Инверсия степенной шкалы

Инвертирование значений происходит автоматически через обратную функцию:

x = y^(1/p)

В Vega/Vega-Lite это используется при интерактивных взаимодействиях (например, zoom, pan), где необходимо восстановить исходные данные из координат пикселей.

Поведение инверсии критично при:

  • обработке событий мыши,
  • вычислении значений tooltip,
  • построении осей с обратным преобразованием.

Отличие от логарифмической шкалы

Степенная шкала часто используется как альтернатива логарифмической в случаях, когда:

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

Логарифмическая шкала резко сжимает большие значения, тогда как степенная делает это постепенно, в зависимости от exponent.

Сравнение поведения:

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

Поведение на осях в Vega-Lite

При использовании степенной шкалы оси автоматически адаптируются:

  • изменяется плотность тиков,
  • перераспределяются подписи,
  • корректируется интервал между делениями.

Пример настройки оси:

{
  "x": {
    "field": "value",
    "type": "quantitative",
    "scale": {
      "type": "pow",
      "exponent": 0.4
    },
    "axis": {
      "title": "Значения"
    }
  }
}

Система автоматически подбирает интервалы, но при необходимости можно задать tickCount или values для контроля дискретизации.

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

Степенная шкала особенно полезна при работе с:

  • экономическими данными (доходы, распределение богатства),
  • биологическими измерениями,
  • физическими величинами с широким диапазоном,
  • пользовательской аналитикой (например, частота событий).

При сильной асимметрии распределения exponent < 1 позволяет визуально «развернуть» низкие значения, делая их различимыми.

Интерактивные графики и переходы

В Vega/Vega-Lite изменение exponent может быть анимировано через сигналы и трансформации. Это позволяет динамически переключать восприятие данных.

Пример сигнала:

{
  "signals": [
    {
      "name": "exp",
      "value": 0.5
    }
  ]
}

И использование в шкале:

{
  "type": "pow",
  "exponent": {"signal": "exp"}
}

Такое связывание позволяет изменять нелинейность отображения без пересборки спецификации.

Особенности вычислительной стабильности

При работе со степенной шкалой важны численные ограничения:

  • отрицательные значения могут приводить к NaN при дробных exponent,
  • нулевые значения требуют специальной обработки,
  • при exponent < 1 возможны усиленные искажения малых значений.

Vega/Vega-Lite применяют внутренние проверки для предотвращения некорректных вычислений, но корректность данных остаётся ключевым фактором.

Комбинирование с другими трансформациями

Степенная шкала часто используется совместно с:

  • фильтрацией данных,
  • агрегацией,
  • биннингом,
  • логарифмическими альтернативами.

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

Практическое влияние на восприятие графиков

Изменение exponent напрямую влияет на когнитивное восприятие:

  • малые значения становятся более различимыми,
  • крупные значения перестают доминировать,
  • тренды становятся визуально «плавнее» или «резче» в зависимости от параметра.

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