Логарифмическая шкала используется для представления данных, диапазон которых охватывает несколько порядков величины, либо содержит экспоненциальный рост. В контексте визуализации она позволяет сжать большие значения и одновременно сохранить различимость малых, делая структуру распределения более читаемой.
В системах визуализации данных Vega и Vega-Lite логарифмическая шкала является встроенным типом масштабирования и широко применяется при построении осей и преобразовании значений в координатное пространство.
Логарифмическая шкала строится на преобразовании исходного значения через логарифм:
[ y = _b(x)]
где:
Ключевое свойство такого преобразования — переход от мультипликативной структуры к аддитивной:
[ (x y) = (x) + (y)]
Это свойство делает логарифмическую шкалу особенно полезной для:
В Vega-Lite логарифмическая шкала задаётся через параметр
scale.type.
{
"data": {"url": "data.csv"},
"mark": "line",
"encoding": {
"x": {"field": "x", "type": "quantitative"},
"y": {
"field": "value",
"type": "quantitative",
"scale": {
"type": "log"
}
}
}
}
В этом случае Vega-Lite автоматически преобразует значения
value по логарифмическому закону перед отрисовкой.
Логарифм не определён для:
Поэтому данные должны быть заранее очищены или трансформированы.
Типичные стратегии:
x + 1)Хотя чаще используется основание 10, Vega-Lite позволяет задать
base:
{
"scale": {
"type": "log",
"base": 2
}
}
Изменение основания влияет на:
В Vega логарифмическая шкала задаётся через объект scale
в более явной форме:
{
"scales": [
{
"name": "yScale",
"type": "log",
"domain": {"data": "table", "field": "value"},
"range": "height",
"base": 10
}
]
}
Здесь:
domain — исходный диапазон данных,range — диапазон пикселей,type: "log" — активирует логарифмическое
преобразование.Логарифмическая шкала существенно изменяет поведение осей.
Обычная линейная шкала:
Логарифмическая:
Пример для base = 10:
Промежуточные значения (2, 3, 5) визуально сжимаются ближе к меньшим степеням.
В Vega-Lite можно управлять отображением:
{
"axis": {
"format": ".0e"
}
}
или более читаемый вариант:
{
"axis": {
"labelExpr": "format(datum.value, '.1s')"
}
}
Это особенно важно при больших диапазонах значений.
{
"data": {
"values": [
{"t": 1, "v": 1},
{"t": 2, "v": 10},
{"t": 3, "v": 100},
{"t": 4, "v": 1000},
{"t": 5, "v": 10000}
]
},
"mark": "line",
"encoding": {
"x": {"field": "t", "type": "ordinal"},
"y": {
"field": "v",
"type": "quantitative",
"scale": {"type": "log", "base": 10}
}
}
}
Без логарифмической шкалы рост визуально стремится к вертикальной асимптоте, тогда как логарифм делает динамику равномерной.
В Vega-Lite логарифмическая шкала может комбинироваться с трансформациями:
{
"transform": [
{"filter": "datum.v > 0"}
]
}
{
"transform": [
{
"calculate": "log(datum.v) / log(10)",
"as": "log_v"
}
]
}
В этом случае можно использовать линейную шкалу, но логарифм уже предрассчитан.
| Характеристика | Линейная шкала | Логарифмическая шкала |
|---|---|---|
| Интервалы | равные | пропорциональные логарифму |
| Малые значения | сжаты | расширены |
| Большие значения | растянуты | сжаты |
| Подходит для | равномерных данных | экспоненциальных распределений |
Логарифмическая шкала особенно важна при анализе:
На линейной шкале такие данные часто выглядят «скученными» вблизи нуля, тогда как логарифмическое преобразование раскрывает внутреннюю структуру распределения.
В интерактивных спецификациях Vega-Lite логарифмическая шкала влияет на:
Это означает, что взаимодействие происходит в исходных данных, несмотря на визуальное преобразование.
В связке с Vega-Lite логарифмическая шкала используется в:
В таких сценариях она позволяет сохранить читаемость данных без потери масштабной структуры.