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