【问题标题】:JFreeChart: several time series shown incorrectly on TimeSeries chartJFreeChart:几个时间序列在时间序列图表上显示不正确
【发布时间】:2012-04-20 16:06:01
【问题描述】:

我有一个 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&lt;String, SortedMap&lt;LocalDate, BigDecimal&gt;&gt; graphData 包含所有系列的数据,其中地图的键是系列名称。 正如我所说 - 有时 A 系列包含日期 1、2 和 3 的值,而系列 B 仅包含 1 和 2。在这种情况下,A 和 B 的行看起来不正确......

有什么简单的方法可以解决这个问题吗? 显而易见且难以实现的方法是计算 B 系列的遗漏值(使用线性插值?)并将其放入数据集,但这真的很难做到。也许我错过了什么?

【问题讨论】:

    标签: java jfreechart


    【解决方案1】:

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

    【讨论】:

    • 你知道,我通过将我的系列移动到不同的数据集和渲染器来解决这个问题。它有帮助
    • 优秀;您可能想添加另一个答案,详细说明您的方法如何提供帮助。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多