В системах визуализации Vega и Vega-Lite параметры clamp
и nice относятся к конфигурации шкал (scales) и определяют
поведение отображения значений за пределами домена, а также способ
округления границ шкалы для более читаемых осей.
В большинстве непрерывных шкал (linear, log, time, sqrt) отображение
значений основано на домене (domain) и диапазоне
(range). Когда входные данные выходят за пределы домена,
возникает вопрос: как должна вести себя шкала — продолжать экстраполяцию
или ограничивать значения?
Параметр clamp управляет тем, будут ли значения,
выходящие за пределы домена, «обрезаться» до крайних значений
диапазона.
Логика работы:
clamp: false (по умолчанию для большинства шкал)
clamp: true
Пример конфигурации Vega-Lite:
{
"data": {"url": "data.csv"},
"mark": "point",
"encoding": {
"x": {
"field": "value",
"type": "quantitative",
"scale": {
"domain": [0, 100],
"clamp": true
}
}
}
}
При такой настройке все значения меньше 0 будут прижаты к 0, а все значения больше 100 — к 100 по оси X.
Использование clamp особенно важно в случаях:
Однако в аналитических графиках clamp может скрывать важную информацию о выбросах, поэтому его применение требует аккуратности.
Параметр nice отвечает за преобразование границ домена в
более «человеческие» значения. Это влияет на ось, деления и восприятие
шкалы.
Без nice границы шкалы строго соответствуют данным:
С nice границы могут быть расширены до:
Такое преобразование не искажает данные, но улучшает читаемость осей.
Пример:
{
"data": {"url": "data.csv"},
"mark": "bar",
"encoding": {
"y": {
"field": "value",
"type": "quantitative",
"scale": {
"nice": true
}
}
}
}
Механизм nice:
Для временных шкал аналогичный принцип приводит к округлению до:
Хотя clamp и nice относятся к разным
аспектам шкалы, их совместное использование влияет на итоговое поведение
визуализации.
Типичная логика обработки шкалы:
nice (если включено)clamp при отображении значенийПри одновременном использовании возможны ситуации:
nice расширяет доменclamp ограничивает значения внутри нового доменаПример:
{
"encoding": {
"x": {
"field": "score",
"type": "quantitative",
"scale": {
"domain": [12.3, 87.6],
"nice": true,
"clamp": true
}
}
}
}
В этом случае:
Наиболее частый случай использования clamp и
nice.
nice улучшает читаемость осейclamp предотвращает визуальные выбросыДля log-шкал:
nice работает ограниченно, так как домен должен быть
положительнымclamp может привести к сильным искажениям, если
значения выходят за допустимый диапазонДля шкал времени:
nice округляет даты до естественных границ (день,
месяц, год)clamp фиксирует события за пределами диапазона на
крайних датахnice и clamp влияют не только на геометрию
шкалы, но и на интерпретацию данных:
nice усиливает структурированность осей, снижая
когнитивную нагрузкуclamp скрывает экстремальные значения, делая график
визуально «чище», но потенциально менее информативнымВ аналитических сценариях предпочтение часто отдаётся
nice, тогда как clamp используется в
прикладных интерфейсах и индикаторах состояния.
В Vega-Lite оба параметра могут задаваться глобально через
config.scale:
{
"config": {
"scale": {
"nice": true,
"clamp": false
}
}
}
Локальные настройки в encoding.scale переопределяют
глобальные, что позволяет гибко комбинировать поведение шкал в разных
частях одной визуализации.
clamp: true,
nice: trueclamp: false,
nice: trueclamp: false,
nice: falseclamp: true,
nice: true