我正在使用JasperReports为我的Web应用程序创建折线图。

我已成功将数据集传递给已编译的报告(在iReport中创建),并且可以正确看到数据。

但是,我想在边缘做一些自定义。

  • 折线图上显示的值正在修整为最大值,因为没有边距。
  • X轴标签位于Y轴0值之后的空白空间之后。我想删除该边距,并从非常靠近X和Y的交汇点开始X轴。

  • 请看图片:

    我正在使用在我的webspps中定义的自定义类。我可以更改字体大小和标签旋转角度,但是不知道如何调整页边距。
    public class LineChartCustomizer implements JRChartCustomizer {
        @Override
        public void customize(JFreeChart jFreeChart, JRChart jrChart) {
            CategoryPlot plot = jFreeChart.getCategoryPlot();
    
            DecimalFormat dfKey = new DecimalFormat("###,###");
    
            StandardCategoryItemLabelGenerator labelGenerator = new StandardCategoryItemLabelGenerator("{2}", dfKey);
    
            LineAndShapeRenderer renderer = new LineAndShapeRenderer();
    
            renderer.setBaseItemLabelsVisible(true);
    
            renderer.setBaseItemLabelGenerator(labelGenerator);
    
            renderer.setBaseItemLabelFont(new java.awt.Font("SansSerif", java.awt.Font.PLAIN, 4));
    
            renderer.setSeriesShape(0, ShapeUtilities.createDiamond(1F));
    
            plot.setRenderer(renderer);
        }
    }
    

    最佳答案

    我认为*您正在寻找 ValueAxis#setUpperMargin(double) CategoryAxis#setLowerMargin(double) 。您可以从CategoryAxisValueAxis获得plot.getDomainAxis()plot.getRangeAxis()。请注意,边距是轴长的百分比,而不是像素值。

    *我对JasperReports并不熟悉,但是您手头有一个CategoryPlot而不是XYPlot似乎有点奇怪。我希望您图片中的图表使用的是xy时间序列。我只用XYPlot测试过它,所以我不完全确定它在CategoryPlot下的表现如何。

    10-06 07:20