如何在条形图中显示每个条形的条形值? [英] How to display bar value for each bar in a bar graph?
本文介绍了如何在条形图中显示每个条形的条形值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
需要查看条形图中的条形代表的确切值,而不是 Y 轴上的近似值.
There is a need to see the exact value that a bar in a bar graph represents, as opposed to the approximate value in the Y axis.
这怎么可能?
感谢阅读!
推荐答案
在 iReport 3.7.6 中,您只需选中 BarPlot 属性下的显示标签"框.
In iReport 3.7.6 you can just check "Show Labels" box under BarPlot properties.
在之前的版本 (3.1.4) 中,我必须创建一个 ChartCustomizer 类.
In a prior version (3.1.4), I had to create a ChartCustomizer class.
如果您需要格式化标签中的数字(例如百分比、添加千位分隔符等),那么您肯定需要一个 ChartCustomizer,即使在新版本中也是如此.
If you need to format the number in the label (e.g. to Percentage, add thousands separator, etc), then you definitely need a ChartCustomizer, even in the new version.
一个简单的例子:
import java.text.NumberFormat;
import net.sf.jasperreports.engine.JRChart;
import net.sf.jasperreports.engine.JRChartCustomizer;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.AbstractCategoryItemLabelGenerator;
import org.jfree.chart.labels.CategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.data.category.CategoryDataset;
public class SimpleBarChartCustomizer implements JRChartCustomizer {
public void customize(JFreeChart chart, JRChart jasperChart) {
CategoryPlot plot = chart.getCategoryPlot();
BarRenderer renderer = (BarRenderer) plot.getRenderer();
CategoryItemRenderer catRenderer = ((CategoryItemRenderer)renderer);
catRenderer.setBaseItemLabelGenerator(new NumberLabelGenerator("", NumberFormat.getInstance()));
}
static class NumberLabelGenerator extends AbstractCategoryItemLabelGenerator implements CategoryItemLabelGenerator {
public NumberLabelGenerator(String labelFormat,
NumberFormat formatter, NumberFormat percentFormatter) {
super(labelFormat, formatter, percentFormatter);
}
protected NumberLabelGenerator(String labelFormat, NumberFormat formatter) {
super(labelFormat, formatter);
}
private NumberFormat formatter = NumberFormat.getInstance();
public String generateLabel(CategoryDataset dataset, int series, int category) {
Number b = dataset.getValue(series, category);
formatter.setMaximumFractionDigits(2);
return formatter.format(b);
}
}
}
这篇关于如何在条形图中显示每个条形的条形值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文