如何使用Jfreechart在折线图的X轴上显示日期

8

我正在尝试显示一条折线图,X轴为时间(HH:MM:SS),Y轴为数字。从“时间”列中读取的数据格式为HH:MM:SS。我从以下方式生成数据集,用于构建图表:

for (Row row : sheet)
{
    Double sar_Val = poiGetCellValue(sar);
    Double date_val = poiGetCellValue(date);

    if(sar_Val != null && date_val != null)
    {
        series1.add(date_val,sar_Val);
    }
    dataset.addSeries(series1);
}

//上述代码中的poiGetCellValue基于数据类型返回一个double

问题是我必须将“时间”列下的格式为HH:MM:SS的数据转换为某个double值并填充series1,因为add函数仅接受double值。一旦我将该值转换为double,如何在X轴上显示时间?或者是否有其他方法可以添加到XY系列中?

1个回答

11

使用org.jfree.data.time.TimeSeries来存储值,而不是XYSeriesTimeSeriesCollection用于数据集。

这将允许您添加一个RegularTimePeriod和一个double,而不是两个double。 RegularTimePeriodDay实现,因此您的最终代码将如下所示:

private XYDataset createDataset() {
    TimeSeries series1 = new TimeSeries("Data");
    Date date = new Date();
    series1.add(new Day(date),46.6);
    TimeSeriesCollection dataset = new TimeSeriesCollection();
    dataset.addSeries(series1);
    return dataset;
}

谢谢。但现在遇到了转换的问题。正如我之前提到的,时间是以HH: MM: SS格式表示的。当我使用cell.getDateCellValue()时,它会返回“Sun Dec 31 15:45:01 IST 1899”,但我只需要15:45:01。需要进行任何转换吗? - Prashant
@user1122891:请修改你的问题,展示新的代码,这样会更易于阅读。 - trashgod
我尝试过了,但正如我上面提到的那样,它给了我以下异常java.lang.IllegalArgumentException:“年”参数必须在1900到9999范围内。 at org.jfree.date.SpreadsheetDate.<init>(Unknown Source) at org.jfree.date.SerialDate.createInstance(Unknown Source) at org.jfree.data.time.Day.<init>(Day.java:142) at org.jfree.data.time.Day.<init>(Day.java:126) at Main.createDataset(Main.java:168) at Main.<init>(Main.java:53) at Main.main(Main.java:225) - Prashant
@trashgod,我试过了以下的代码系列1. add(new Day(date.getDateCellValue()),29.0),但正如我所说,它给出了一个异常,错误信息为java.lang.IllegalArgumentException: 'year'参数必须在1900到9999的范围内。 - Prashant
请编辑您的问题以显示新代码和错误,这样更容易阅读。您是否正在使用org.apache.poi.ss.usermodel.DateUtil - trashgod
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接