2

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

4

2 回答 2

2

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

于 2012-04-20T16:46:02.303 回答
1

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

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

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

于 2012-04-21T11:06:28.377 回答