2

日付ごとにいくつかの値を表示する TimeSeries グラフがあり、2 つの異なる線として表示される 2 つのシリーズがあります。問題は、1 つの系列に特定の日付の値が含まれていない場合があることです。その場合、このシリーズでは前のポイントから次のポイントまでラインが続くと想定しています。残念ながら、チャートでは正しく動作しません。何かがまったく正しく描画されていないようです。

すべてのシリーズにすべての日付ごとに適切な値が含まれていれば問題ありません。

私のコードはここにあります:

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

中点式は、欠落している 1 つの縦座標を置き換える簡単な方法です。

于 2012-04-20T16:46:02.303 に答える
1

それを解決する方法を見つけました - シリーズごとに独自のデータセットとレンダラーを作成します。次に、グラフを作成するときにいずれか 1 つのデータセットを使用し、その後、それらすべてのデータセットとレンダラーを追加します。

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

または、シリーズがたくさんある場合は、サイクルで実行することをお勧めします

于 2012-04-21T11:06:28.377 に答える