【问题标题】:BarChart bar value labels are hidden by the margin条形图条形值标签被边距隐藏
【发布时间】:2016-02-16 09:12:19
【问题描述】:

我正在使用 Jaspersoft Studio 创建带有图表的报告文件。

当我使用条形图并尝试显示条形值标签时,这些标签会被边距覆盖。在我看来,这看起来像是一个错误,有什么方法可以正确显示标签吗?

为了更好地说明问题,您可以在图片上看到问题并以红色找到预期值。

编辑

这是我自定义酒吧聊天的进度。到目前为止,我可以进行几项更改,但我坚持最重要的一项。

我尝试在没有任何视觉效果的情况下使用巨大的边距值。

    rangeAxis.setUpperMargin(200);
    rangeAxis.setLowerMargin(200);

我也玩过界线。在这种情况下,我可以看到整个标签,但问题是这些值不会停在 100(所以这不是一个有效的解决方案)。

我发现了完全忽略边距的原因:

public void setUpperMargin(双边距) 设置轴的上边距(作为轴范围的百分比)并向所有注册的侦听器发送 AxisChangeEvent。 仅在自动计算轴范围时才添加此边距 - 如果您手动设置轴范围,则边距将被忽略。

但如果我删除边距,那么边界会自动从 0-125 计算,这不是范围。

像往常一样,欢迎任何建议。

为了更好地理解,您可以从我的 GitHub 存储库下载示例代码。

GitHub:https://github.com/MichaelKnight/jaspertest.git

【问题讨论】:

    标签: jasper-reports bar-chart


    【解决方案1】:

    jasper 报告中的图表由 库生成。在您的情况下,您可以:

    1) 设置范围轴上边距,为值标签提供更多空间(参见 jfreechart BarChartDemo5)。

    2) 在条形图内绘制标签(参见 jfreechart BarChartDemo7)编辑后如果需要固定轴的上限值,则需要使用它,因此如果上限等于最大条形值,则标签没有剩余空间

    要在 jasper 报告中自定义条形图,请创建一个扩展 JRChartCustomizer 的自定义程序类 (MyChartCustomizer)。这将暴露:

    public void customize(JFreeChart chart, ChartComponent chartComponent)
    {
      //Simple example of increasing upper margin on range axis, to print label
      //inside of bar see jfreechart BarChartDemo7
      CategoryPlot plot = (CategoryPlot) chart.getPlot();
      NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
      rangeAxis.setUpperMargin(0.20); //Increase or decrease to change upper margin in percentages (0 --> 1.0)
      rangeAxis.setAutoRange(true); //make sure that fixed range is not set
    }
    

    将类添加到类路径并在 jrxml 中设置customizerClass 属性

    <barChart>
        <chart customizerClass="my.package.MyChartCustomizer">
       ....
        </chart>
       ...
    </barChart>
    

    【讨论】:

    • 我测试了你的代码。有一点变化:我需要使用 JRAbstractChartCustomizer 否则我会得到 ClassCastException。一旦我做出改变,我就可以运行你的代码,但我没有得到任何结果。我会多玩一点。
    • 你是对的对不起,或者只是实现 JRChartCustomizer,查看 JFreeChart 示例,你可以用图表做很多事情。
    • 我已经测试了您的提案,但到目前为止还不是一个有效的解决方案。我探索了其他方法来做到这一点,但没有取得多大成功。您还有什么建议吗?
    • @MichaelKnight,你看到有什么不同吗?,你的图表定制器被调用了吗?我在 jfreechart 中测试并增加上边距作品,如果你没有固定范围...我编辑答案以确保自动范围..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多