Степенная шкала в визуализации данных в Vega и Vega-Lite представляет собой нелинейное преобразование числовой оси, основанное на степенной функции. Она используется для изменения распределения значений таким образом, чтобы подчеркнуть определённые диапазоны данных — малые, средние или большие значения — в зависимости от выбранного показателя степени.
Степенная шкала определяется функцией вида:
y = x^p
где:
При p = 1 шкала становится линейной, при p > 1 усиливается вклад больших значений, при 0 < p < 1 — акцент смещается в сторону малых значений. В отличие от логарифмической шкалы, степенная не требует строго положительных значений, но чувствительна к области определения и может усиливать крайние значения при неправильной настройке.
В системе декларативной визуализации 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 является ключевым управляемым фактором поведения шкалы.
Значение степени определяет характер трансформации:
Визуально это влияет на плотность точек, расстояния между делениями и восприятие динамики роста.
Степенная шкала сохраняет стандартную структуру Vega/Vega-Lite шкал, где:
Особенность степенной шкалы заключается в том, что преобразование применяется до маппинга в range, что означает изменение геометрического распределения точек.
Пример с явным domain:
{
"type": "pow",
"domain": [1, 1000],
"range": [0, 500],
"exponent": 0.3
}
При малых значениях exponent шкала сильно «сжимает» верхние диапазоны, делая нижние значения более различимыми.
Инвертирование значений происходит автоматически через обратную функцию:
x = y^(1/p)
В Vega/Vega-Lite это используется при интерактивных взаимодействиях (например, zoom, pan), где необходимо восстановить исходные данные из координат пикселей.
Поведение инверсии критично при:
Степенная шкала часто используется как альтернатива логарифмической в случаях, когда:
Логарифмическая шкала резко сжимает большие значения, тогда как степенная делает это постепенно, в зависимости от exponent.
Сравнение поведения:
При использовании степенной шкалы оси автоматически адаптируются:
Пример настройки оси:
{
"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"}
}
Такое связывание позволяет изменять нелинейность отображения без пересборки спецификации.
При работе со степенной шкалой важны численные ограничения:
Vega/Vega-Lite применяют внутренние проверки для предотвращения некорректных вычислений, но корректность данных остаётся ключевым фактором.
Степенная шкала часто используется совместно с:
Комбинация степенной шкалы с агрегированными данными позволяет управлять плотностью визуализации без потери структуры распределения.
Изменение exponent напрямую влияет на когнитивное восприятие:
Это делает степенную шкалу инструментом не только технического, но и семантического управления визуализацией данных.