折线图不完全可见

折线图不完全可见

我正在使用JFreeChart库在网站上创建Chart(根据this教程,该库与我的应用程序集成在一起)。除了一件事情,一切看起来都很不错:由于某种原因,由于某些数据折线图不完全可见(请参见屏幕)。



我不知道为什么会这样。我正在发布负责配置的代码:


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;

    }

最佳答案

理查德证明的链接很好地说明了问题。但是,最终,您似乎需要手动设置范围轴的上限,以解决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);


它在补丁程序中,但是它应该提供所需的结果,具体取决于数据的性质以及连接数据点所产生的曲线。

07-28 00:22