Шкала threshold в Vega-Lite и Vega представляет собой
дискретное отображение непрерывного числового диапазона в заранее
заданные категории значений на основе набора порогов. Она применяется
тогда, когда требуется не плавная интерполяция, а разбиение данных на
интервалы с фиксированными границами и сопоставление каждому интервалу
собственного визуального значения — чаще всего цвета, но также и
размеров, символов или других визуальных параметров.
Шкала threshold реализует функцию разбиения числовой оси
на сегменты:
domainrangeФормально:
x < d1 → используется
r0d1 ≤ x < d2 → используется r1x ≥ dn → используется rnгде d1…dn — пороговые значения, а r0…rn —
визуальные значения.
Ключевая особенность: количество элементов в range
всегда равно domain.length + 1.
В Vega-Lite шкала threshold задаётся через объект scale
с типом "threshold":
{
"data": {
"values": [
{"value": 10},
{"value": 35},
{"value": 60},
{"value": 85}
]
},
"mark": "circle",
"encoding": {
"x": {"field": "value", "type": "quantitative"},
"y": {"field": "value", "type": "quantitative"},
"color": {
"field": "value",
"type": "quantitative",
"scale": {
"type": "threshold",
"domain": [20, 50, 80],
"range": ["#2c7bb6", "#abd9e9", "#fdae61", "#d7191c"]
}
}
}
}
Здесь значения распределяются по четырём цветовым зонам:
< 2020–4950–79≥ 80linear)Линейная шкала выполняет непрерывное отображение:
threshold не интерполирует, а дискретизирует.
quantize автоматически делит диапазон на равные
интервалы.
threshold отличается тем, что:
quantile строит интервалы на основе распределения
данных.
threshold полностью игнорирует распределение и опирается
только на заданные границы.
domain — массив чисел строго по возрастанию:
"domain": [10, 20, 50]
Ошибочные случаи:
range — массив визуальных значений:
"range": ["green", "yellow", "orange", "red"]
Типы значений могут быть:
string)Границы в threshold шкале являются левозакрытыми интервалами:
Пример:
domain: [10, 20]
intervals:
(-∞, 10)
[10, 20)
[20, +∞)
"scale": {
"type": "threshold",
"domain": [0.3, 0.6, 0.9],
"range": ["green", "yellow", "orange", "red"]
}
Используется для:
При визуализации геоданных threshold позволяет задавать смысловые зоны:
"color": {
"field": "density",
"type": "quantitative",
"scale": {
"type": "threshold",
"domain": [50, 100, 200, 500],
"range": ["#f7fbff", "#c6dbef", "#6baed6", "#2171b5", "#08306b"]
}
}
Применение:
"scale": {
"type": "threshold",
"domain": [-10, 0, 10],
"range": ["#d73027", "#fee08b", "#1a9850", "#006837"]
}
Интерпретация:
Если значение:
rangerangeТаким образом шкала всегда тотальна и не имеет «пустых зон».
В спецификации Vega threshold шкала используется аналогично, но на уровне более низкоуровневых конструкций:
{
"scales": [
{
"name": "colorScale",
"type": "threshold",
"domain": [10, 50, 100],
"range": ["blue", "yellow", "red", "black"]
}
]
}
Далее шкала применяется через scale("colorScale").
Наиболее частая ошибка:
"domain": [10, 20, 30],
"range": ["red", "green"]
Такое определение некорректно, так как требуется 4 значения в range.
Ошибка логики возникает, когда ожидается включение верхней границы в интервал.
При неравномерных данных threshold может давать визуально «перекошенную» картину, так как не учитывает распределение.
Threshold шкала часто используется вместе с:
aggregate (средние значения по группам)bin (предварительное разбиение данных)calculate (вычисляемые поля)Пример:
"transform": [
{
"calculate": "datum.sales / datum.target",
"as": "ratio"
}
]
и далее применяется threshold к ratio.
Пороговые значения обычно задаются не математически, а семантически:
Это отличает threshold от статистических шкал.
Threshold шкала:
Это делает её эффективной для больших наборов данных в визуализациях.
В Vega-Lite легенда автоматически группирует значения по интервалам threshold шкалы, но:
legend.labelExprПример:
"legend": {
"labelExpr": "datum.value < 20 ? '<20' : datum.value < 50 ? '20-49' : datum.value < 80 ? '50-79' : '80+'"
}
Threshold может комбинироваться с другими шкалами:
Так формируются многомерные карты, где цвет отражает категории, а координаты — числовые значения.
| Тип шкалы | Тип отображения | Основа деления |
|---|---|---|
| linear | непрерывная | функция |
| quantize | дискретная | равные интервалы |
| quantile | дискретная | распределение |
| threshold | дискретная | заданные пороги |
При использовании threshold шкалы визуальная интерпретация становится категорической:
Это усиливает:
но снижает точность восприятия конкретных чисел