Excel图表平滑算法

3
我需要在javascript中编程使我的"图表生成器"变得更加平滑。Excel的做法很好,但我不知道使用了什么算法。我尝试编写宏来获取VBA代码,但我得到的只有(预期) ActiveChart.SeriesCollection(1).Smooth = True 有人知道微软Excel用什么算法平滑图表或查看其代码的方法吗?

enter image description here

更新:对于那些发现这个问题并有相同问题的人,我可以推荐这个SVG解决方案,其中包含JavaScript源代码。

谷歌电子表格中的图表平滑变体也是可以接受的。 - Boris Zagoruiko
某种多项式拟合。请参见此维基链接以获取示例。 - Automate This
1个回答

5
Splines被用来解决这个问题:

http://en.wikipedia.org/wiki/Spline_interpolation

我不确定Excel是否完全使用了这种方法,但是三次样条插值经常用于这种“连接点”的问题。基本上,您通过点拟合一组三次多项式(即一组三次方程)。每个三次多项式用于由两个或三个点界定的一个或两个区域。这些三次函数通过在一个三次函数完成并且下一个三次函数开始的每个点处保留不仅值而且梯度来定义。通常第二个导数被设置为零,这给出了另一个边界条件和更好的平滑度。


是的,这是三次样条插值。我已经找到了这个信息并打算删除问题。无论如何,感谢您提供的有用答案。 - Boris Zagoruiko
4
Excel 平滑算法使用 Catmull-Rom 样条曲线:http://answers.microsoft.com/en-us/office/forum/office_2007-excel/how-does-excel-plot-smooth-curves/c751e8ff-9f99-4ac7-a74a-fba41ac80300。 此外,也可以参考这里:http://www.mrexcel.com/forum/excel-questions/649288-extract-excel-scatter-plot-connected-smooth-lines-points-2.html。 - lori_m
@lori_m:这非常有帮助,我会在午餐时间阅读。同时,您知道Catmull-Rom样条是否具有二阶连续性吗? - Bathsheba
它们是C¹连续的,即在第一导数上连续但不在第二导数上连续。 - lori_m

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接