Интерполяция линий в Nivo определяет способ, которым набор дискретных точек превращается в непрерывную линию на графике. В контексте линейных графиков (Line Chart) параметр curve играет ключевую роль, так как он управляет алгоритмом построения сегментов между точками данных.
В основе большинства реализаций лежит модуль d3-shape, а Nivo лишь предоставляет удобный слой конфигурации поверх него. Выбор типа интерполяции влияет не только на визуальную плавность, но и на восприятие данных: от строгой линейной точности до сглаженных аналитических кривых.
Линейная интерполяция является самым прямолинейным способом соединения точек.
Каждая пара соседних значений соединяется отрезком прямой линии без каких-либо сглаживаний или дополнительных контрольных точек.
Основные характеристики:
Использование linear оправдано в случаях, когда важна дискретность данных: финансовые показатели по дням, события, измерения с резкими скачками.
Пример конфигурации:
curve: 'linear'
Monotone-интерполяция предназначена для сглаживания линии без появления ложных экстремумов (overshoot). Она сохраняет монотонность данных вдоль одной из осей.
Гарантирует монотонность по оси X. Используется, когда значения X строго возрастают (например, временные ряды).
Свойства:
curve: 'monotoneX'
Аналогичен monotoneX, но применяется к вертикальной оси.
Используется реже, так как большинство графиков ориентированы по X как по времени.
curve: 'monotoneY'
Cardinal-интерполяция создаёт плавную кривую, проходящую через все точки, с управляемым уровнем натяжения (tension).
Особенности:
Хотя в Nivo напрямую параметр tension часто скрыт или фиксирован, поведение сохраняется как часть d3-shape.
curve: 'cardinal'
Basis-кривая не обязана проходить через сами точки данных. Она строится как аппроксимация, создавая максимально плавную линию.
Характерные особенности:
Используется, когда важна общая форма изменения, а не точные координаты.
curve: 'basis'
Natural интерполяция строит кривую, минимизирующую общую кривизну, что визуально делает линию “естественной”.
Свойства:
curve: 'natural'
Catmull-Rom обеспечивает прохождение кривой через все точки с контролируемой плавностью.
Особенности:
Часто используется в интерфейсах, где важно сочетание точности и эстетики.
curve: 'catmullRom'
Step-интерполяция формирует ступенчатую линию, отражающую дискретные изменения значений.
Переход к новому значению происходит до точки по оси X.
Визуально:
curve: 'stepBefore'
Переход к новому значению происходит после точки.
Визуально:
curve: 'stepAfter'
Step-интерполяции применяются в системах с дискретной логикой: состояния, события, переключатели, уровни доступа.
В некоторых конфигурациях используется замыкание линии, когда последняя точка соединяется с первой.
Применяется в:
Хотя чаще это относится к area/radar, линейная логика сохраняется.
Интерполяция в Nivo не является статичной операцией: она пересчитывается при изменении:
При увеличении количества точек некоторые типы кривых (basis, cardinal) становятся более гладкими, тогда как linear сохраняет сегментированность без изменений.
Разные типы curve радикально меняют интерпретацию одной и той же серии значений:
Визуальная интерпретация становится частью семантики данных, а не только графическим стилем.
Интерполяция тесно взаимодействует с:
При временных рядах monotoneX снижает риск ложных экстремумов, особенно при неравномерных данных.
Даже при сглаженной кривой точки могут оставаться видимыми, компенсируя потерю точности.
При переходах между состояниями интерполяция влияет на траекторию движения линии, а не только на финальный результат.
Каждый тип интерполяции имеет потенциальные проблемы:
Выбор всегда связан с компромиссом между точностью и визуальной гладкостью.
Функционально типы интерполяции можно разделить на три группы:
Точные:
Сглаженные с сохранением точек:
Сглаженные аппроксимирующие: