2011-01-12 33 views
5

爲了節省帶寬,並以不具有產生圖片/圖自己我打算使用谷歌的圖表API:圖表描繪:只保留最相關的數據

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

它的工作原理是簡單地發佈一個(可能長的)GET(或一個POST),然後Google自己生成並提供圖形。到目前爲止,我已經得到了大約兩千條條目的圖表,我想把這個條目減少到一些任意數量的條目(例如,只保留原始條目的50%或10%的條目原始條目)。

我該如何決定應保留哪些條目,以使我的新圖形最接近原始圖形?

這是一種曲線擬合問題嗎?

注意,我知道我能做到POST到谷歌的圖表API高達16K的數據,這可能足以滿足我的需求,但我仍然好奇

回答

3

你所希望做的被稱爲下采樣decimation。本質上,您可以過濾數據,然後從每N個採樣中刪除N - 1(抽取或按N因子下采樣)。粗略過濾器只是採取本地移動平均線。例如。如果你想用N = 10的因子抽取,那麼每10個點用這10個點的平均值替換。

請注意,對於上述方案,您可能會從曲線圖中丟失一些高頻數據(因爲您實際上是低通濾波數據) - 如果重要的是要看到短期變化,那麼另一種方法是繪製每N個點作爲表示這N個點的範圍(即最小...最大值)的單個垂直條。

+0

不,這不會使新圖形保持接近原始圖形。實際上,您可能會失去所有相關數據(可能只是X點的一部分)。如果OP意味着要進行嚴肅的「相關數據」,這不是解決方案。 – 2011-01-12 22:14:46

1

圖(時間序列數據)彙總是一個非常困難的問題。這就像在文本中決定什麼是「相關」部分,以便自動彙總它。我建議你使用最尊敬的圖書館之一在時間序列數據中尋找「利益格局」,由Eamonn Keogh

3

flot-downsample plugin的海軍報JavaScript的圖形庫可以做你在找什麼,到一個點。

目的是嘗試保留原始行的視覺特徵,使用少得多的數據點。

該算法背後的研究記錄在in the author's thesis

請注意,它不適用於任何類型的系列,並且根據我的經驗,當您希望下采樣係數超過10時,不會給出有意義的結果。

問題是,它削減了相同大小的窗口系列,然後保持每個窗口一個點。由於您可能在某些窗口中的數據比其他窗口的數據密集,因此結果不一定是最佳的。但它是有效的(以線性時間運行)。