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 存储库下载示例代码。
jasper 报告中的图表由jfreechart 库生成。在您的情况下,您可以:
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>
我正在使用 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 存储库下载示例代码。
jasper 报告中的图表由jfreechart 库生成。在您的情况下,您可以:
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>