var valueline = d3.svg.line()
.interpolate("monotone")
.x(function(d) { return x(d.t); })
.y(function(d) { return y(d.r); });
这会使线条更平滑。
有没有办法控制平滑的强度?
插值函数的其他字符串值(如:basis,cardinal ...)可以提供良好的平滑效果,但也可以改变直线的形状。
我需要的是“单调”但更强大的东西。只能使角落光滑圆润。
documentation表明我可以使用自定义插值函数,但很少提及如何制作它。
答案 0 :(得分:3)
一个选项是基数样条。基数样条曲线具有.tension()
参数,该参数的值介于0和1之间,默认值为0.7。通过使用此参数,您可以实现您想要的效果。
如果这不符合您的要求,您唯一的选择是实现自定义插补器。您链接到的文档页面实际上已经详细介绍了如何实现,包括线性插值的定义和自定义行插值的example。