0

ChartFactory createTimeseries以前は、静的メソッドと静的メソッドを使用してデフォルトのグラフを作成していましたcreatePieChart。そして、その質問をフォローアップして、これらの静的メソッドを使用しない次のコードを書きました。しかし、結合されたプロット チャートを作成する次のコードを記述した後、ChartFactoryデータが利用できない場合、同様の結果 (つまり、 で作成されたチャートと同様) に到達できません。

この画像は、次のように作成された、よく表示された空の時系列グラフを示していChartFactoryます。 ここに画像の説明を入力

この画像は、不適切に表示された空の結合プロット チャートです (空のデータのメッセージは表示されず、ドメイン軸の最初の値は切り捨てられます!): ここに画像の説明を入力

データと結合されたグラフのラベルの重複と切り捨て: ここに画像の説明を入力

これは結合されたプロット チャート コードです。

protected CombinedDomainXYPlot createDataset() {
    CombinedDomainXYPlot combinedPlot = new CombinedDomainXYPlot(new DateAxis("Execution Date"));
    TimeSeries tSeries = null;
    XYPlot xyPlot = null;
    XYLineAndShapeRenderer localXYLineAndShapeRenderer = null;
    NumberAxis numberAxis = null;
    for (ChartMetric metric : values.getChartMetrics()) {
        tSeries = new TimeSeries(metric.getFinalDisplayName());
        numberAxis = new NumberAxis(metric.getFinalDisplayName());
        numberAxis.setAutoRangeIncludesZero(false);
        for (Object[] row : values.getChartMetricValue(metric)) {
            Second sec = new Second((Date) row[0]);
            tSeries.add(sec, (Double) row[1]);
        }
        localXYLineAndShapeRenderer = new XYLineAndShapeRenderer(true, false);
        xyPlot = new XYPlot(new TimeSeriesCollection(tSeries), null, numberAxis, localXYLineAndShapeRenderer);
        xyPlot.setNoDataMessage("xy no data message");
        combinedPlot.add(xyPlot);
    }
    combinedPlot.setGap(40.0D);
    return combinedPlot;
}

protected JFreeChart createChart(CombinedDomainXYPlot combinedXYPlot) {
    super.localJFreeChart = new JFreeChart(chartDetails.getTitle(), JFreeChart.DEFAULT_TITLE_FONT, combinedXYPlot, true);
    ChartFactory.getChartTheme().apply(localJFreeChart);
    return chart;
}

夏を迎えるには:

. 表示された単一プロットの時系列チャート (つまり、最初の画像) のように、空の結合ドメイン チャートを適切に表示する必要があります。結合されたチャートのデータを正常にロードする場合、範囲軸ラベルが重ならないようにする必要があります。残念ながら、範囲軸のラベルは非常に長くなる場合があります。したがって、サブプロットの高さに関してのみラベルをラップできれば、それでうまくいくと思います。

お時間をいただきありがとうございます。

4

1 に答える 1

0
  1. 最初は表示されない、適切に表示されたプレースホルダー データセットを設定し、実際のデータが利用可能になったときにそれを置き換えることができます。

  2. 役に立たない場合rangeAxis.setVerticalTickLabels(false)は、質問を理解していません。

于 2013-03-11T13:45:06.583 に答える