【问题标题】:JFreeChart MarginJFreeChart 保证金
【发布时间】:2013-08-27 02:35:00
【问题描述】:

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

我已经成功地将数据集传递给编译报告(在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);
    }
}

【问题讨论】:

    标签: java jasper-reports jfreechart


    【解决方案1】:

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

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

    【讨论】:

    • 工作线很有魅力。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 2023-03-26
    • 2016-06-06
    相关资源
    最近更新 更多