線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1659
推到 Plurk!
推到 Facebook!

TChart大量資料的圖形繪製

尚未結案
king5201
一般會員


發表:16
回覆:10
積分:5
註冊:2009-12-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-07-15 00:16:10 IP:140.118.xxx.xxx 訂閱
 
當資料數量很大的時候(幾千萬筆左右)

使用tchart來繪製圖形

因為它會把資料存起來

而造成記憶體佔用很高...

有時候會出現 out of memory的錯誤提示

請問有方法能處理這種問題嗎?

dueseven
一般會員


發表:5
回覆:9
積分:7
註冊:2007-05-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-07-18 18:14:59 IP:140.110.xxx.xxx 訂閱
之前曾經在這裏問過類似的問題,
後來在實作的時候,
真的也不得不做資料刪減的動作,
而且,一次要把千萬筆資料畫出來,
也真的是一件很不明智的動作,
畢竟,我們眼睛也看不到少幾筆資料的這回事。

我實作的演算法是這樣的,

A. 當要顯示的資料個數大於5000筆時:
1) 單一個 Series 最多只顯示 5000 筆資料 (5000*3點)
2) 若有 20000000 筆資料要顯示,則把資料分成5000個group,每個group中有 20000000 / 5000 = 4000 筆資料。
3) 對這5000個group,取"最小值"、"平均值"、"最大值",依序填入 5000*3 的 array 空間。

B. 待顯示的資料小於5000筆時:直接顯示 (情況發生在可能需要 zoom in 的時候)。

這樣的作法,可以讓所有的 peak 與 null 都能完全地顯示出來,當有需要詳細的資訊時,zoom in 進去看時,也不會lost data....

Victor4022
中階會員


發表:0
回覆:76
積分:90
註冊:2011-02-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-07-29 23:05:00 IP:122.126.xxx.xxx 訂閱
如果有時間欄位的話就更好辦, 可以考慮週/雙週/單月/單季/半年/一年 等時間單位來呈現....
無故障
一般會員


發表:17
回覆:69
積分:17
註冊:2004-03-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-08-15 14:57:20 IP:123.110.xxx.xxx 未訂閱
[code cpp]

bool __fastcall TfrmMain_TaiTea::SerLine000BeforeAdd(TChartSeries *Sender)
{

if (SerLine000->LastValueIndex >= 1000)
{
SerLine000->Delete(0) ; //刪除第0點資料
};
return true;
}
//---------------------------------------------------------------------------

[/code]

此為限制顯示筆數
------
嘿嘿嘿
系統時間:2017-10-20 5:33:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!