5

我正在使用JasperReports为我的 webapps 创建折线图。

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

但是,我想在边际上做一些定制。

  1. 由于没有边距,折线图上显示的值正在修剪为最高值。
  2. 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);
    }
}
4

1 回答 1

4

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

* 我对 JasperReports 不熟悉,但你CategoryPlot手头有一个 . 而不是XYPlot. 我本来希望您图片中的图表使用 xy 时间序列。我只用 . 测试过这个XYPlot,所以我不完全确定它在CategoryPlot.

于 2013-08-28T19:10:02.783 回答