2012-11-20 46 views
1

我正在開發使用jQuery /海軍報插件的Web應用程序,我需要diplay 30.000數據點一些時間序列。由於數據量巨大,我遇到了(所有瀏覽器都有)的性能問題。當然,我並不需要diplay所有數據點,就不可能有一個400像素的圖表。我總的想法是隻顯示「最顯著的數據」,所以我需要一個最好的做法/建議,以保持良好的性能和不俗圖表的準確性顯示大量的數據與jQuery海軍報

+0

我也想在服務器端下采樣(我有PHP服務器端),以減少帶寬使用 – Nibbiolo

+1

不知道你期待什麼樣的答案,除了明顯...發送較少的數據 – charlietfl

+0

相關:http: //stackoverflow.com/questions/4674544/graph-plotting-only-keeping-most-relevant-data – Mark

回答

2

如果圖表是400像素寬,那麼你的服務器端代碼不應該向瀏覽器發送400多個點。例如,如果你每分鐘都有一個點的時間序列數據,那麼一個解決方案就是將所有的值平均一個小時,把你的30k點降到500點。如果數據來自數據庫;您的查詢可能大致如下:

SELECT truncate_to_hour(data_time) as sample_time, avg(data_value) 
FROM values 
GROUP BY sample_time 

但顯然沒有單一的最佳做法;這取決於你的數據。

+0

我進一步說,每像素1點太多了,它應該更像每點3個像素(400/3 = 133),但5是理想的(400/5 = 80)。記住Flot圖中的每個點如此直觀地使用多於1個像素,400是不可用的。 – TravisO

+0

從理論上講,你可以從中受益多達1ppp - 想象某種樣條曲線玲瓏的 - 但你說的沒錯,在大多數現實世界使用情況你要至少各點之間的幾個像素。 – DNS

+1

我明白你在說什麼,但是當在FLOT圖上的點在身體上要比1個像素大,你將不能夠準確地懸停鼠標它們,或看到他們正確,所以我爲什麼說3,甚至每點5個像素。 – TravisO