C# 建了個視窗放進去個自帶的chart控制元件,然后cs檔案里面去實時讀取資料,在chart里面顯示。
讀取沒問題,非常快就存進陣列里面了,然后我用
chart1.Series["data"].Points.Clear();
chart1.Series["data"].Points.DataBindXY(x_point, y_point);
當資料很少的時候(幾千個),大概延時1秒左右就出來了,可是我實際上需呀60000個左右的資料,這時候等個幾分鐘都出不來,一直卡在DataBindXY這里。
我也試過用執行緒,可是DataBindXY在執行緒里面用不了。
請問該怎么做讓chart控制元件能快點出來圖,又或者有什么免費的圖表控制元件可以使用。我之前用了葡萄城的試用版,里面的chart控制元件倒是能很快出來,現在試用版到期了,用不了了。
uj5u.com熱心網友回復:
螢屏橫向也就一千多個點,你放上 60000 個資料,能看的清楚嗎?既然看不清,又何必放那么多?
uj5u.com熱心網友回復:
沒必要顯示這么多點按比例間隔取100,200之類的點數,形成新陣列再bind
uj5u.com熱心網友回復:
因為一次采集上來就是60000左右個點,然后我用折線圖連起來,我也想過除以十,每10個點用,可是后面要找峰,我擔心前面簡化了,后面找峰會不準不對。用商用控制元件就很快就出圖,奈何過期了。
uj5u.com熱心網友回復:
我以前有個需求要分析電線的波形頻率圖,每條線有2000個點,每次分析大概控制在一百條線以下,基本在50條左右,這樣算起來也有2000*50=100000點 ,我是自己用gdi畫的,很快
uj5u.com熱心網友回復:
主要看你是什么資料,如果是時間序列資料,我們正常采用漢明視窗按時間視窗提取顯示如果是空間資料,通常是按空間比例再次抽樣
uj5u.com熱心網友回復:
抽樣,10個一抽甚至60個一抽。圖形指示反映趨勢,并不影響你去計算峰值uj5u.com熱心網友回復:
你這樣就是把前后弄混了。
1、整個圖表要找到峰谷。
2、資料多要做資料篩選。
3、未來可能有放大縮小的功能。
那么你要做的就是:
在每次放大縮小前,先找到峰谷,然后開始篩選資料(10選1或者怎么做你自己安排),在峰谷資料附近加入峰谷資料,然后展示篩選后的資料即可。
uj5u.com熱心網友回復:
謝謝大家,現在我把資料10個一合并,縮到6000個點了,圖出來了,可是有點卡,大概2秒才能出一次圖,有時候憋了10多秒才出,怎么辦了?uj5u.com熱心網友回復:
1000 個點就綽綽有余了,何苦難為自己uj5u.com熱心網友回復:
謝謝大家,現在我把資料10個一合并,縮到6000個點了,圖出來了,可是有點卡,大概2秒才能出一次圖,有時候憋了10多秒才出,怎么辦了?
按照現有的螢屏解析度,顯示6000個點或者1000個點,
客戶的感覺并沒有想象中差的那么多
接著再精簡資料就能保證性能
思路樓上幾位大神都說過了
這些點的選擇有講究,
是分時間段取特征點(開始,最大,最小,結束)得來的,
同時需要給用戶提供區域放大的功能
uj5u.com熱心網友回復:
說那么多舉個栗子吧原始資料:
1 2 3 4 0 4 5 6 2 5 5 9 8
你可以清洗為
1 3 0 5 2 5 8
然后加入篩出的峰值
1 3 0 5 2 5 9 8
也可以清洗為
1 4 5 5 8
加入篩出的峰谷值
1 4 0 5 5 9 8
你想精簡中間多少資料精簡多少,你想取平均值訂正資料也可以,我這邊就不舉栗了。
做法就是開頭結尾你都有,然后有峰谷即可。
uj5u.com熱心網友回復:
事實上現在的螢屏解析度就算是4K螢屏吧,也就4096×2160的解析度,這個意思是指4K屏在極限情況下也最多只能展示4630個點的一條線(斜邊)而人眼可見的變動率你繪制到1000點就已經足夠查看趨勢了,因此你現在要做的第一步是將資料精簡到一個合適的既可以展示趨勢又可以快速渲染的一個平衡點上,然后再去做渲染。
當然你如果就硬要上這么多點也可以,GDI+多執行緒繪圖操作是可以實作的,但是實際上并不會提升更多的用戶體驗,相反的因為你自己粗制濫造了一套圖表多執行緒控制元件,很多用戶功能的實作反而更加困難了。
uj5u.com熱心網友回復:
至于簡化資料,提取變化趨勢這些有太多的人做了太多的演算法我就不班門弄斧了uj5u.com熱心網友回復:
樓主,卡頓現象是因為資料量大后,螢屏重繪時的時間延遲造成的,就是顯示幕速度與cpu速度不一致引起。看看我的貼子可能對你有用。uj5u.com熱心網友回復:
樓主,卡頓現象是因為資料量大后,螢屏重繪時的時間延遲造成的,就是顯示幕速度與cpu速度不一致引起。看看我的貼子可能對你有用。
你這為了推控制元件挖墳過分了啊
uj5u.com熱心網友回復:
樓主,卡頓現象是因為資料量大后,螢屏重繪時的時間延遲造成的,就是顯示幕速度與cpu速度不一致引起。看看我的貼子可能對你有用。
你這為了推控制元件挖墳過分了啊
無所謂,但可以解決你的問題。
uj5u.com熱心網友回復:
樓主,卡頓現象是因為資料量大后,螢屏重繪時的時間延遲造成的,就是顯示幕速度與cpu速度不一致引起。看看我的貼子可能對你有用。
你這為了推控制元件挖墳過分了啊
你可以做一些商業開發,大家相互協作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/280452.html
標籤:C#
