我有一个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系列的遗漏值(使用线性插值?)并将其放入数据集中,但这样做真的很难。也许我错过了什么?
答案 0 :(得分:2)
midpoint formula是替换单个缺失纵坐标的简单方法。
答案 1 :(得分:1)
找到解决方法 - 对于每个系列,创建它自己的数据集和渲染器。 然后,在创建图表时使用任何一个数据集,然后添加所有这些数据集和渲染器。
xyPlot.addDataset(0, firstDataset);
xyPlot.addDataset(1, secondDataset);
或者如果有足够的系列,那么最好在循环中进行