【问题标题】:Excel chart smoothing algorithmExcel图表平滑算法
【发布时间】:2013-09-10 14:28:18
【问题描述】:

我需要在 javascript 中以编程方式平滑我的“图表生成器”。这样做的 Excel 变体非常好,但我不建议使用什么算法。我尝试通过编写宏来获取 VBA 代码,但我得到的只是(预期的)ActiveChart.SeriesCollection(1).Smooth = True

有人知道 Microsoft Excel 使用什么算法来平滑图表或查看其代码的方式吗?

UPD:对于那些发现这个问题并有同样问题的人,我可以推荐这个 SVG solution 与 javascript 源代码

【问题讨论】:

  • 图表平滑的 Google 电子表格变体也是可以接受的。
  • 某种多项式拟合。有关示例,请参阅此 wiki link

标签: algorithm excel charts smoothing vba


【解决方案1】:

样条线用于执行此操作:

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

我不确定 Excel 是否完全使用此方法,但 三次样条 通常用于这种“连接点”问题。本质上,您通过这些点拟合一组三次多项式(即一组三次方程)。每个立方体用于以两个或三个点为界的一个或两个区域。三次方的定义不仅是保留值,而且还保留一个立方结束和下一个立方开始的每个点的 梯度。二阶导数通常设置为零,这为您提供了另一个边界条件和更好的平滑度。

【讨论】:

  • 是的,它是三次样条。我找到了这些信息,并打算删除问题。无论如何,感谢您提供有用的答案。
  • @Glen Swift;还值得一提的是(1)www.nr.com 包含三次样条的 java(不是 javascript)实现,并且(2)你应该切换到单调三次样条方案来处理诸如累积密度函数之类的事情。
  • Excel 平滑算法使用 Catmull-Rom 样条:answers.microsoft.com/en-us/office/forum/office_2007-excel/…。另见此处:mrexcel.com/forum/excel-questions/…)
  • @lori_m:这很有帮助,会成为我午餐时间的阅读材料。同时,你知道 Catmull-Rom 样条是否连续到二阶吗?
  • 它们是 C¹ 连续的,即在一阶导数中连续但不是二阶导数
猜你喜欢
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 2013-03-05
  • 2013-02-17
相关资源
最近更新 更多