JFreeChart:时间序列图表上错误地显示多个时间序列



我有一个时间序列图表,显示每个日期的一些值,并且有两个序列显示为两条不同的线。问题是有时一个系列不包含某些特定日期的值。在这种情况下,我假设该行将从本系列的上一点延续到下一点。不幸的是,它在图表上无法正常工作,看起来根本没有正确绘制某些内容。

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

我的代码在这里:

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级数的缺失值(使用线性插值?)并将其放入数据集,但这真的很难做到。也许我错过了什么?

中点公式是替换单个缺失纵坐标的简单方法。

找出解决方法 -对于每个系列,创建它自己的数据集和渲染器。然后,在创建图表时,使用任何一个数据集,然后添加所有这些数据集和渲染器。

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

或者,如果可以有很多系列,那么最好在循环中这样做

最新更新