сглаживание линий d3 (сильнее монотонности)

var valueline = d3.svg.line()
.interpolate("monotone") 
.x(function(d) { return x(d.t); })
.y(function(d) { return y(d.r); });

Это делает линию более гладкой.

есть ли способ контролировать силу сглаживания?

Другие строковые значения функций интерполяции (такие как: базис, кардинал...) дают хорошее сглаживание, но также изменяют форму линии.

Мне нужно что-то вроде «монотона», но сильнее. Только углы сделайте гладкими и закругленными.

документация показывает, что я могу использовать пользовательскую функцию интерполяции, но упоминает очень немного о том, как это сделать.


person Aladdin Mhemed    schedule 04.02.2014    source источник


Ответы (1)


Одним из вариантов может быть кардинальный сплайн. Кардинальный сплайн имеет параметр .tension(), который принимает значения от 0 до 1 со значением по умолчанию 0,7. Играя с этим параметром, вы можете добиться того, чего хотите.

Если это не соответствует вашим требованиям, единственный вариант — реализовать собственный интерполятор. Страница документации, на которую вы ссылаетесь, содержит довольно много подробностей о том, как это будет реализовано, включая определение линейной интерполяции и пример пользовательской интерполяции строк.

person Lars Kotthoff    schedule 04.02.2014