2014-03-05 90 views
0

我在JFreeChart 1.0.17中創建了一個XYSeries,如下所示,並動態構建一個圖表。添加的x,y數據可以是任意數量級,但是當x和y值非常小時(小於等於1e-5)時,自動調整量計算看起來不起作用,並且生成的圖將只是一個水平線。在這種情況下,將所有數據乘以係數10,000,然後將它們添加到系列中會得出正確的圖。數據被添加爲雙倍數據,並且我在調試器中查看了XYSeries對象,以確保正確的值在那裏結束。我錯過了什麼嗎?有什麼方法可以幫助自動量程計算做正確的事情嗎?XYSeries自動調整精度損失?

series = new XYSeries("Heartbeat"); 
final XYSeriesCollection data = new XYSeriesCollection(series); 
chart = ChartFactory.createXYLineChart("", "", "", data, PlotOrientation.VERTICAL, false, true, false); 
final XYPlot plot = chart.getXYPlot(); 
ValueAxis domain = plot.getDomainAxis(); 
domain.setAutoRange(true); 
((NumberAxis) domain).setAutoRangeIncludesZero(false); 
ValueAxis range = plot.getRangeAxis(); 
range.setAutoRange(true); 
((NumberAxis) range).setAutoRangeIncludesZero(false); 

回答

2

類ValueAxis具有autoRangeMinimumSize屬性默認爲0.00000001。當範圍自動計算時,軸不會讓它低於這個尺寸。它適用於所有數據值相同的情況,在這種情況下,它決定了軸的長度。但是,正如你發現的那樣,如果你所有的數據值都小於0.00000001,就會引起問題,所以你應該將它設置爲低一些,而不是使用默認值。

+0

完美地工作,謝謝! –