В Vega и Vega-Lite легенды для непрерывных шкал (continuous scales)
часто отображаются в виде цветового градиента, дополненного набором
меток (ticks), которые визуально разбивают диапазон значений на
интерпретируемые опорные точки. За плотность и количество этих опорных
значений отвечает параметр tickCount.
tickCount в градиентной легендеtickCount определяет ориентировочное число делений
шкалы, которые должны быть отображены в легенде. В контексте градиентных
легенд это означает:
Важно, что tickCount не задаёт строго фиксированный
список значений. Это именно рекомендация системе генерации оси (или
легенды), которая может быть скорректирована алгоритмами округления,
«nice»-масштабирования и ограничениями по визуальному пространству.
tickCountВ Vega-Lite параметр задаётся внутри объекта легенды, связанного с масштабом:
{
"mark": "rect",
"encoding": {
"color": {
"field": "value",
"type": "quantitative",
"scale": {
"scheme": "viridis"
},
"legend": {
"tickCount": 5
}
}
}
}
В Vega (низкоуровневый JSON-спецификации) аналогичная настройка задаётся через конфигурацию легенды шкалы:
{
"legends": [
{
"fill": "color",
"tickCount": 7
}
]
}
Для непрерывных шкал (quantitative,
temporal) Vega использует алгоритмы генерации «приятных»
делений. tickCount влияет на этот процесс следующим
образом:
Если диапазон данных узкий, фактическое число тиков может быть меньше указанного. Если диапазон широкий — система может увеличить шаг между тиками, сохраняя читаемость.
niceОдним из ключевых факторов, влияющих на итоговый результат
tickCount, является параметр nice у шкалы:
{
"scale": {
"type": "linear",
"nice": true
},
"legend": {
"tickCount": 6
}
}
nice: true приводит к округлению границ домена к
«человеко-читаемым» значениям, что может изменить фактическое
распределение тиков.
В связке:
tickCount определяет количество желаемых делений;nice корректирует сами значения;В случае цветовых градиентов (continuous color ramps)
tickCount не влияет на сам градиент, а только на:
Пример:
{
"mark": "rect",
"encoding": {
"color": {
"field": "temperature",
"type": "quantitative",
"scale": {
"scheme": "redyellowblue"
},
"legend": {
"orient": "right",
"tickCount": 8
}
}
}
}
Здесь градиент остаётся непрерывным, но подписи температуры будут распределены примерно в восьми точках диапазона.
Внутренний процесс генерации тиков можно описать как последовательность шагов:
domain).nice (если включён).tickCount как желаемого количества
делений.Таким образом, tickCount не гарантирует точного
совпадения, а задаёт целевую плотность.
tickMinStep и valuestickCount часто используется вместе с другими
параметрами, влияющими на поведение шкалы:
tickMinStep — минимальный допустимый шаг между
значениями;values — явное задание списка тиков;format — форматирование подписей.В отличие от них:
tickCount не фиксирует значения;values полностью переопределяет автоматическую
генерацию;tickMinStep ограничивает минимальную плотность.Пример жёсткого контроля:
{
"legend": {
"values": [0, 10, 20, 30, 40]
}
}
Здесь tickCount игнорируется.
В Vega-Lite tickCount чаще всего применяется
декларативно и автоматически интегрируется в систему шкал.
В Vega:
scale.ticks;tickCount является частью легенды или оси, а не только
encoding.Основная задача tickCount — управление визуальной
нагрузкой:
Для градиентных шкал особенно важно учитывать:
Для временных шкал (temporal) tickCount
взаимодействует с календарными интервалами:
{
"legend": {
"tickCount": 6
}
}
При этом система может выбрать интервалы:
в зависимости от диапазона данных.
При использовании tickCount в градиентных легендах
следует учитывать:
labelOverlap и
labelLimit;Особенно заметно это проявляется в компактных визуализациях, где легенда ограничена по высоте.
Во всех этих случаях tickCount служит механизмом
балансировки между точностью интерпретации и визуальной простотой.