D3 - SVG线中基线和线性插值之间的差异

时间:2013-08-08 09:50:52

标签: svg charts d3.js

我实施了一个多系列折线图,就像M. Bostock给出的here一样,遇到了一个我无法解释的奇怪问题。当我选择线性插值并设置我的比例和轴时,一切都是正确的,并且值很好地对齐。 Linear interpolation

但是当我将插值更改为基础而不修改轴和刻度时,线与轴之间的值不正确。

Basis interpolation

这里发生了什么?使用单调设置,我可以实现与基础插值几乎相同的效果,但没有线和轴之间的同步问题。我仍然想了解发生了什么。

1 个答案:

答案 0 :(得分:27)

基础插值正在实现beta spline,人们喜欢将其用作插值函数,因为它可以平滑极端峰值。当您对要预期平滑变化的东西进行建模但仅具有清晰,不频繁采样的数据时,这非常有用。这样做的结果是生成的线不会连接所有数据点,从而改变极值的外观。

在您的情况下,尖峰是有趣的特征,通常为0基线值的例外。使用样条插值时,可以平滑这些峰值。

这是一个有趣的演示,可以使用不同类型的线插值: http://bl.ocks.org/mbostock/4342190

您可以拖动数据,使它们像您的尖峰一样,甚至点击添加新点。然后,切换到基础插值并观察峰值得到的平均值。

Basis interpolation