1

私は JFreeChart ライブラリを使用してウェブサイトでチャートを作成しています (このチュートリアルに従ってアプリケーションと統合されたライブラリ)。1 つの点を除いて、すべてが見栄えがします: 何らかの理由で、一部のデータの折れ線グラフが完全に表示されていません (画面を参照してください)。

完全に表示されていないチャート

なぜそれが起こっているのかわかりません。構成を担当するコードを投稿しています:

public JFreeChart createChart()
    {
        NumberAxis numberaxis = new NumberAxis("X");
        numberaxis.setAutoRangeIncludesZero(false);
        NumberAxis numberaxis1 = new NumberAxis("Y");
        numberaxis1.setAutoRangeIncludesZero(false);
        XYSplineRenderer xysplinerenderer = new XYSplineRenderer();

        XYPlot xyplot = new XYPlot(createSampleData(), numberaxis, numberaxis1, xysplinerenderer);
        xyplot.setBackgroundPaint(new Color(238, 242, 250));//
        xyplot.setDomainGridlinePaint(new Color(238, 242, 250));
        xyplot.setRangeGridlinePaint(new Color(238, 242, 250));
        xyplot.getRenderer().setSeriesPaint(0, Color.BLUE);
        xyplot.setAxisOffset(new RectangleInsets(4D, 4D, 4D, 4D));
        XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) xyplot.getRenderer();
        renderer.setSeriesShapesVisible(0, true);//FIXME Dots

        xyplot.getDomainAxis().setStandardTickUnits(NumberAxis.createIntegerTickUnits());

        JFreeChart jfreechart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, xyplot, true);
        jfreechart.setBackgroundPaint(Color.white);
        return jfreechart;

    }
4

1 に答える 1

1

リチャードが提供するリンクは、問題をよく説明しています。しかし、最終的には、XYSplineRenderer によって生成されるスプラインの上限曲線を考慮して、範囲軸の上限を手動で設定する必要があるようです。上記の例では、これは次のようになります。

xyplot.getRangeAxis().setUpperBound(22.5);

実際には、Y 値の最大値を計算し、それにパーセンテージを追加するか、より複雑に周囲のポイントに基づいて上限を計算することをお勧めします。10% を追加することから始めて、それがどのようになるかを確認します。

// Iterate data values; use Math.max() to determine maxYValue; then:
xyplot.getRangeAxis().setUpperBound( maxYValue + maxYValue * 0.1);

パッチにありますが、データの性質とデータ ポイントを接続して生成される曲線に応じて、必要な結果が得られるはずです。

于 2014-02-25T14:40:05.967 に答える