2011-09-07 216 views
1

我有一個可以使用jfreechart繪製的時間序列數據。問題是,隨着新數據的進入,圖表將根據新的數據集而變化。我用過,在Jfreechart中動態更改Y軸範圍

chart.fireChartChanged(); chartPanel.repaint();

問題是,有些數據可能超出Y軸的當前範圍,我想知道軸範圍如何根據迄今爲止的時間序列中的最大值進行更改?謝謝!

+0

如果這是一個重複的帳戶,您可以請求[合併](http://meta.stackexchange.com/questions/18232/how-can-one-link-merge-combine-associate-two-accounts- users-anonymous-unregiste/73801#73801)您的其他帳戶。 – trashgod

回答

1

我使用了chart.fireChartChanged(); chartPanel.repaint(); ...但圖表重新繪製後仍具有舊的範圍。

這一切似乎都不必要的複雜:軸測距和通知應該是自動的。在此example中,範圍隨異常值累積而變化,因爲add()「向所有註冊的偵聽器發送SeriesChangeEvent」。在此example中,範圍是固定的,但會發生相同的通知。

由於我們無法猜測您的程序在這方面的失敗,因此可能會提供一個sscce,它可以顯示您描述的問題。

1

看看Range class

有很多種方法,如

combine(Range range1, Range range2) 
      Creates a new range by combining two existing ranges. 

expandToInclude(Range range, double value) 
     Returns a range that includes all the values in the specified range AND the specified value. 

shift(Range base, double delta, boolean allowZeroCrossing) 
      Shifts the range by the specified amount. 

你可以使用任何根據您的要求

你甚至可能需要添加下列[根據您的評論]

timeaxis.setAutoRange(true); 
timeaxis.setFixedAutoRange(1000.0); 
+0

感謝您的回覆。當我創建繪圖時,我使用Range來設置座標軸。例如yRange =新的Range()並將其傳遞給軸。稍後當圖表更新新數據時,我更改了yRange,但重新繪製後圖表仍舊具有舊範圍。還是我需要直接從圖表對象中檢索它? – Daniel