2014-01-21 29 views
1

朋友,Atlast我只是從數據庫中爲收集的值生成JFreeChart。但就此,我只是用如何在JFreeChart中省略秒數?

Second sec = new Second(); 
Series.add(sec.previous(), ExistingValue); 
Series.add(sec, Value); 
Dataset = new TimeSeriesCollection(Series); 

但它顯示的結果包含額外的小數點。它只增加了0.250秒。其實我想秒只增加1.我怎麼能得到它?有什麼辦法可以從0以外的給定值開始Y角度圖嗎?

enter image description here

回答

2

你可以得到你的陰謀/圖表域座標軸(X軸)的引用,並設置你喜歡的任何格式的構造SimpleDateFormat:

JFreeChart chart; 
DateAxis axis = (DateAxis)chart.getXYPlot().getDomainAxis(); 
axis.setDateFormatOverride(new SimpleDateFormat("HH:mm:ss")); 

同樣可以做到格式範圍軸(Y軸)。

+0

感謝@Heisenberg –

+0

你必須重寫刻度標籤格式時要小心,因爲它並不一定會改變刻度線間隔(只是標籤),你可能會得到重複的標籤(例如,如果間距是1/4秒,而你將標籤格式化爲只顯示秒數,那麼你會得到「14:23:39」出現四次)。 –

2

這裏我用下面的代碼工作良好。

TimeSeries series1 = new TimeSeries("Random Data", Minute.class); 

series1.add(new Minute(mi,hr,dat,mo,yr), value); 
+0

感謝@AmirtharajCVijay –

2

DateAxis構造函數中,你會發現這一段代碼,構建一套「標準」嘀一DateAxis尺寸:

DateAxis.createStandardDateTickUnits(zone, locale) 

當渲染軸的JFreeChart會選擇最小的刻度大小不會導致標籤重疊。在任何時候,您都可以更改JFreeChart從中選擇的一組標準尺寸,只需撥打setStandardTickUnits(...)並提供您自己的設置。

或者,您可以關閉自動打勾單位選擇,並使用setDateTickUnit()方法設置固定的打勾大小,但現在您有責任選擇不會導致重疊標籤的打勾大小。

+0

請看看這個問題http://stackoverflow.com/questions/42224395/real-time-on-x-axis-with-adjustable-scale-on-x-axis – JAVA

1

其實我使用下面的代碼來解決我的問題。也就是說,

 DateFormat formatter = new SimpleDateFormat("hh:mm:ss a"); 
     DateAxis axis = (DateAxis) Plot.getDomainAxis(); 
     axis.setDateFormatOverride(formatter); 

它顯示的時間像上午01時15分45秒