TimeSeries
を使用して Java でデータをグラフ化しようとしていますJFreeChart
が、データは への呼び出しの出力である double で構成されていますRenjin
。にデータを追加するコードTimeSeries
は次のとおりです。
for (int i=0; i<series2Values.length; i++) {
if (!Double.isNaN(series2Values[i])) {
series2.add(new Hour((int)times[i], new Day()), series2Values[i]);
} else {
series2.add(new Hour((int)times[i], new Day()), null);
}
}
final TimeSeriesCollection dataset2 = new TimeSeriesCollection();
dataset2.addSeries(series2);
JFreeChart chart2 = ChartFactory.createTimeSeriesChart(title, "Time (Hour)", "Vehicles Parked", dataset2, true, true, false);
ChartFrame frame2 = new ChartFrame(title, chart2, false);
frame2.pack();
frame2.setIconImage(img.getImage());
frame2.setVisible(true);
問題は、データがグラフ化されるたびに、X 軸の時間が 24 時間制の軍事時間で表示され、time[]
配列に重複する値が含まれている場合、次のメッセージSeriesException
がスローされることです。
Exception in thread "AWT-EventQueue-0" org.jfree.data.general.SeriesException: You are attempting to add an observation for the time period [6,12/7/2016] but the series already contains an observation for that time period. Duplicates are not permitted. Try using the addOrUpdate() method.
例外で推奨されているaddOrUpdate()
方法は、新しいデータ ポイントを作成するのではなく、12 時間前にその時点の最初のデータ ポイントを上書きするだけです。代わりに、AM と PM が表示された 12 時間形式でデータを表示したいと思います。
でこれを行う便利な方法はありますJFreeChart
か、またはコードを変更して、Renjin
1 から 24 までの単なる整数ではなく、フォーマットされたものを返すように呼び出した方が便利でしょうか? (例: 既にフォーマットされた時刻文字列)?