我正在使用JFreeChart库在网站上创建图表(根据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;
}
答案 0 :(得分: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);
它处于补丁状态,但它应该提供您想要的结果,具体取决于数据的性质和连接数据点的曲线。