JFreeChart TimeSeries Axis в невоенное время
Я пытаюсь построить график TimeSeries
данные в Java с помощью JFreeChart
Однако данные состоят из двойников, которые являются выходными 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 часов раньше, а не создаст новую. Вместо этого я хотел бы отобразить данные в 12-часовом формате с указанием AM и PM.
Есть ли удобный способ сделать это с JFreeChart
или было бы удобнее изменить код, чтобы мои звонки Renjin
вернуть что-то отформатированное, а не просто целые числа от 1 до 24? (например, уже отформатированные строки времени)?
1 ответ
Я не знаком с Renjin
, но при условии Date
значение, представляющее миллисекунды с начала эпохи,
использование
setDateFormatOverride()
на оси с подходящимSimpleDateFormat
например,axis.setDateFormatOverride(new SimpleDateFormat("hh:mm"));
TimeSeries
"гарантирует… что каждый период появляется не более одного раза в серии". Это должно стать спорным, если входящее значение преобразуется правильно.