JFreeChartSeries系列异常......"试图在时间段内添加观察结果......"

时间:2016-07-18 21:00:00

标签: java excel apache-poi jfreechart

我想绘制一张xy图表,其中时间/日期是我的域名,整数是我的范围。我设法得到我的图形,我想要它....域/范围最小值/最大值是它从excel单元格中读取的最低值和最高值但是它没有在图表上绘制任何东西但是在调试之后我和#39;我不确定如何继续...

  TimeSeries timeSeries = new TimeSeries("time");
  TimeSeriesCollection timeDataSet = new TimeSeriesCollection(timeSeries);
  while (rowIterator.hasNext()) {
            Date date;


            Number y_data = 0;

            row = (XSSFRow) rowIterator.next();
            XSSFCell x_col = row.getCell(0);
            date = x_col.getDateCellValue();

            Time t = new Time(date.getTime());

            XSSFCell y_col = row.getCell(1);
            y_data = y_col.getNumericCellValue();
            ///////PROBLEM BELOW

            timeSeries.add(new Day(t), y_data); //timeSeries.addOrUpdate(new Day(t), y_data)

        }
   timeDataSet.addSeries(timeSeries);

我有两个选择,但它们都没有帮助...如果我使用timeSeries.add()我得到上面提到的错误,即使它们是完全不同的时代......是的,它们是同一天,更具体地,甚至某些读取的相同分钟但是秒和毫秒不同。如果我使用timeSeries.addOrUpdate()它似乎完全覆盖每个读取和我的TimeSeries变量arraylist只有垃圾......这是它读取所有值后的含义,[org.jfree.data.time.TimeSeriesDataItem @ 40c77f1e,null,null,...更多null .....我知道它应该存储xy对,因为我正在运行另一个更简单的例子并且它有适当的对可能这是不同的因为我和#39; m使用TimeSeries .....我也尝试过不使用Time,只是让它成为

 timeSeries.addOrUpdate(new Day(date), y_date);

但同样的问题......谢谢你的任何建议

1 个答案:

答案 0 :(得分:2)

这很正常。你可以使用Day JfreeChart类,这是一个没有时间意识的一天的TimePeriod。

/**
* Represents a single day in the range 1-Jan-1900 to 31-Dec-9999.  This class
* is immutable, which is a requirement for all {@link RegularTimePeriod}
* subclasses.
*/
public class Day extends RegularTimePeriod implements Serializable {

尝试使用更精细的TimePeriod,例如FixedMillisecond或Millisecond,您不应该再遇到问题了。如:

timeSeries.add(new FixedMillisecond (date.getTime()), y_data); 

对于您的信息,在时间序列中,时间段可以是以下任何一个:

Year 
Quarter 
Month 
Week 
Day 
Hour 
Minute 
Second 
Millisecond 
FixedMillisecond