非军事时间的 JFreeChart TimeSeries 轴
JFreeChart TimeSeries Axis in non-military time
我正在尝试使用 JFreeChart
绘制 Java 中的 TimeSeries
数据,但数据由调用 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.
Exception 推荐的 addOrUpdate()
方法只会覆盖 12 小时前那个时间的第一个数据点,而不是创建一个新数据点。我想改为以 12 小时格式显示数据,并显示上午和下午。
有没有方便的方法用 JFreeChart
来做到这一点,或者更改代码是否更方便,以便我对 Renjin
return 的调用格式化,而不是只是 1 到 24 之间的普通整数? (例如,已经格式化的时间字符串)?
我不熟悉 Renjin
,但假设 Date
值表示自 epoch、
以来的毫秒数
使用setDateFormatOverride()
on the axis with a suitable SimpleDateFormat
,例如
axis.setDateFormatOverride(new SimpleDateFormat("hh:mm"));
TimeSeries
"will ensure…that each period appears at most one time in the series." 如果正确转换传入值,这应该没有实际意义。
我正在尝试使用 JFreeChart
绘制 Java 中的 TimeSeries
数据,但数据由调用 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.
Exception 推荐的 addOrUpdate()
方法只会覆盖 12 小时前那个时间的第一个数据点,而不是创建一个新数据点。我想改为以 12 小时格式显示数据,并显示上午和下午。
有没有方便的方法用 JFreeChart
来做到这一点,或者更改代码是否更方便,以便我对 Renjin
return 的调用格式化,而不是只是 1 到 24 之间的普通整数? (例如,已经格式化的时间字符串)?
我不熟悉 Renjin
,但假设 Date
值表示自 epoch、
使用
setDateFormatOverride()
on the axis with a suitableSimpleDateFormat
,例如axis.setDateFormatOverride(new SimpleDateFormat("hh:mm"));
TimeSeries
"will ensure…that each period appears at most one time in the series." 如果正确转换传入值,这应该没有实际意义。