BarChart 条形值标签被边距隐藏

BarChart bar value labels are hidden by the margin

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

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

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

编辑

这是我自定义聊天栏的进度。到目前为止,我可以做一些改变,但我坚持最重要的改变。

我尝试使用巨大的边距值,但没有任何视觉效果。

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

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

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

public void setUpperMargin(double margin) Sets the upper margin for the axis (as a percentage of the axis range) and sends an AxisChangeEvent to all registered listeners. This margin is added only when the axis range is auto-calculated - if you set the axis range manually, the margin is ignored.

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

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

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

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

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

1) 设置范围轴上边距以给值标签更多space(参见jfreechart BarChartDemo5)。

2) 在条形内绘制标签(参见 jfreechart BarChartDemo7)编辑后如果你需要固定轴的上限值你需要使用它,因此标签没有 space 留下如果上限等于最大柱值

要在 jasper 报告中自定义条形图,请创建扩展 JRChartCustomizer 的自定义程序 class (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
}

将 class 添加到 classpath 并在 jrxml 中设置 customizerClass 属性

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