非军事时间的 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 之间的普通整数? (例如,已经格式化的时间字符串)?

Cross-posted here.

我不熟悉 Renjin,但假设 Date 值表示自 epoch

以来的毫秒数
  1. 使用setDateFormatOverride() on the axis with a suitable SimpleDateFormat,例如

    axis.setDateFormatOverride(new SimpleDateFormat("hh:mm"));
    
  2. TimeSeries "will ensure…that each period appears at most one time in the series." 如果正确转换传入值,这应该没有实际意义。