2009-07-20 45 views
2

JFreechart中包含4個時間序列圖和共同時域軸的組合圖。JFreechart實時組合圖 - 如果沒有收到數據點,則爲步驟子圖表呈現前一個值

子圖的數據以不同的速率到達。例如,我可能會每隔幾毫秒收到一次價格更改事件,並且每分鐘都會發生一次位置更改。我目前正在使用XYStepRenderer渲染這些系列以生成步驟圖表。

我希望能夠做這樣的事情:

  • 價格點在時間T接收並繪製在圖
  • 沒有數據在時間T被接收的位置圖表,因此我們假設值沒有改變,並且呈現了之前的位置值 - 即水平地延長步驟線
  • 在時間T + 1接收到位置點並且繪製改變步驟圖
  • 在時間T + 1沒有收到價格點,所以p上一個價格是繪製的

是否有任何簡單的方法在JFreechart中做到這一點?目前我有一個工作實現,但這並不處理呈現假設的值。

我最初的想法是改變數據模型,以便我可以快速找到以前的值並更改調用以告知每個子圖在任何繪圖收到事件時繪製。

回答

3

我想你需要緩存傳入的更改並應用規則集以將更改轉發到JFreeChart(這不是真的推薦用於實時工作,但我發現對於低頻更新它可以工作好)。

我猜你有一個數據集的價格和位置的數據集。您的位置和價格更新是否帶有時間戳?如果沒有,你會遇到順序接收這些問題並試圖將它們聯繫起來的問題(也許更新在某個時間窗口地圖內到達同一時刻?)。如果他們確實有時間戳,那麼當價格到來時您可以派生出新的頭寸(與舊頭寸相同),然後在需要時替換該頭寸。

無論發生什麼情況,我都會將圖表更新從位置/價格更新中分離出來,以防萬一您遇到位置/價格變化。您不希望將其轉換爲您將不得不立即丟棄的多個圖表更新。

+0

感謝您的建議Brian。我收到時間戳,因此我可以自己控制圖表的更新。當我沒有收到任何新數據時,我想避免的是在圖表上繪製點(即標記)。作爲一個快速便宜的黑客,我已經將XYStepLine渲染類分類爲數據集中最後一個點的延長線。當這個系列的新點到達時,這條線會被糾正。我打算創建一種圖表數據高速緩存以允許重播舊數據,並且可能會將您的建議納入此服務。 – pjp 2009-07-20 14:54:41

相關問題