图形绘制:仅保留最相关的数据

时间:2011-01-12 22:06:54

标签: algorithm graph

为了节省带宽以及不自己生成图片/图表,我打算使用Google的图表API:

http://code.google.com/apis/chart/

只需发出一个(可能很长的)GET(或POST),然后Google自己生成并提供图表。

到目前为止,我已经有大约两千个条目的图表,我想将其减少到一些任意数量的条目(例如,只保留原始条目的50%,或者原始条目的10%)项)。

如何确定应保留哪些条目以使我的新图表最接近原始图表?

这是某种曲线拟合问题吗?

请注意,我知道我可以使用高达16K的数据对Google的图表API进行POST,这可能足以满足我的需求,但我仍然很好奇

3 个答案:

答案 0 :(得分:6)

Flot JavaScript图表库的flot-downsample plugin可以满足您的需求。

  

目的是尝试使用相当少的数据点保留原始线的视觉特征。

此算法背后的研究记录为in the author's thesis

请注意,根据我的经验,它不适用于任何类型的系列,如果您希望下采样因子超过10,则无法提供有意义的结果。

问题是它在相同大小的窗口中切割系列,然后每个窗口保持一个点。由于某些窗口中的数据可能比其他窗口更密集,因此结果不一定是最佳的。但它很有效(以线性时间运行)。

答案 1 :(得分:4)

您要做的事情被称为下采样抽取。基本上,您过滤数据,然后从每N个样本中删除N - 1(抽样或按N因子下采样)。原油过滤器只取一个局部移动平均线。例如。如果你想以N = 10的因子进行抽取,那么用10个点的平均值替换每10个点。

请注意,使用上述方案,您可能会从图中丢失一些高频数据(因为您实际上是对数据进行低通滤波) - 如果看到短期可变性很重要,那么另一种方法是将每N个点绘制为一个垂直条,代表那些N个点的范围(即min..max)。

答案 2 :(得分:1)

图表(时间序列数据)摘要是一个非常难的问题。这就像在文本中决定保留其自动摘要的“相关”部分。我建议您使用最受尊敬的图书馆之一,通过Eamonn Keogh

在时间序列数据中查找“感兴趣的图案”