2012-04-20 40 views
2

我有一个TimeSeries图表,每个日期显示一些值,并且有两个系列显示为两个不同的行。 问题是,有时一个系列不包含某些特定日期的值。在这种情况下,我假设这一系列将继续从前一个点到下一个点。 不幸的是,它不能在图表上正常工作,它看起来像什么都没有正确绘制。JFreeChart:几个时间序列在TimeSeries图表上显示不正确

如果每个系列每个日期都包含适当的值,那就没问题。

我的代码是在这里:

for (String source : graphData.keySet()) { 
     SortedMap<LocalDate, BigDecimal> data = graphData.get(source); 
     LocalDate prevDate = null; 
     for (LocalDate date: data.keySet()) { 
      if (prevDate == null) { 
       prevDate = date; 
       continue; 
      } 
      dataset.add(new SimpleTimePeriod(prevDate.toDateMidnight().toDate(), date.toDateMidnight().toDate()), data.get(prevDate), source, true); 
      prevDate = date; 
     } 
     dataset.add(new SimpleTimePeriod(prevDate.toDateMidnight().toDate(), futureDate), data.get(prevDate), source, true); 
    } 

Map<String, SortedMap<LocalDate, BigDecimal>> graphData包含的所有数据系列,其中地图的关键是该系列的名称。 正如我所说 - 有时系列A包含日期1,2和3的值,而系列B仅适用于1和2.在这种情况下,A和B的行看起来不正确...

是否有任何简单的方法来解决? 显而易见的难以实现的方法是计算B系列的遗漏值(使用线性插值?)并将其放到数据集中,但这确实很难做到。也许我错过了什么?

回答

1

发现了如何解决它 - 为每个系列创建它自己的数据集和渲染器。 然后,在创建图表时使用任何一个数据集,然后添加所有这些数据集和渲染器。

xyPlot.addDataset(0, firstDataset); 
xyPlot.addDataset(1, secondDataset); 

或者有可能是大量的一系列那么最好做到这一点的周期

2

midpoint formula是替换单个缺失坐标的简单方法。

+0

你知道,我固定,通过移动我的系列不同的数据集和渲染。它帮助 – javagirl 2012-04-20 20:02:23

+0

优秀;您可能想要添加另一个答案,详细说明您的方法如何提供帮助。 – trashgod 2012-04-20 21:15:01