Jasper reports 条形图条形值标签隐藏在边距处

Jasper reports 条形图条形值标签隐藏在边距处,jasper-reports,bar-chart,jfreechart,Jasper Reports,Bar Chart,Jfreechart,我正在使用Jaspersoft Studio创建带有图表的报告文件 当我使用条形图并尝试显示条形值标签时,这些标签被边距覆盖。在我看来,这看起来像一个bug,有没有办法正确显示标签 为了更好地说明问题,您可以在图片上看到问题,还可以找到红色的预期值 编辑 下面是我定制酒吧聊天的进度。到目前为止,我可以做一些改变,但我坚持最重要的一个 我尝试在没有任何视觉效果的情况下使用巨大的边距值 rangeAxis.setUpperMargin(200); rangeAxis.setLow

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

当我使用条形图并尝试显示条形值标签时,这些标签被边距覆盖。在我看来,这看起来像一个bug,有没有办法正确显示标签

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

编辑

下面是我定制酒吧聊天的进度。到目前为止,我可以做一些改变,但我坚持最重要的一个

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

    rangeAxis.setUpperMargin(200);
    rangeAxis.setLowerMargin(200);
我也打了界外球。在这种情况下,我可以看到整个标签,但问题是值不会停在100(因此这不是有效的解决方案)

我发现了利润被完全忽略的原因:

公开作废设置Permargin(双倍保证金) 设置轴的上边距(作为轴范围的百分比),并向所有注册的侦听器发送AxisChangeEvent仅当自动计算轴范围时,才会添加此边距-如果手动设置轴范围,将忽略边距。

但是如果我去掉了边距,那么边界是从0-125自动计算的,这不是范围

如往常一样,欢迎提出任何建议

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


GitHub:

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

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

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

要在jasper report中自定义条形图,请创建一个customizer类(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
}
将类添加到classpath,并在jrxml中设置
customizerClass
属性


....
...

我测试了你的代码。有一个小小的变化:我需要使用
jractractchartcustomizer
,否则我会得到ClassCastException。一旦我做了更改,我就可以运行你的代码,但我没有得到任何结果。我会再多玩一点。你是对的抱歉,或者只是实现JRChartCustomizer,看看JFreeChart示例,你可以用图表做很多事情。我已经测试了你的建议,到目前为止还不是一个有效的解决方案。我探索了其他方法,但没有多大成功。你还有其他建议吗?@MichaelKnight,你发现有什么不同吗?你的图表定制师叫什么来着?。我在jfreechart中进行了测试,如果没有固定的范围,则增加上边距是可行的。。。我编辑答案以确保自动范围。。