如何在条形图中显示每个条的条值?

如何在条形图中显示每个条的条值?,第1张

如何在条形图中显示每个条的条值?

在iReport 3.7.6中,您可以仅选中BarPlot属性下的“显示标签”框。

在以前的版本(3.1.4)中,我必须创建一个ChartCustomizer类。

如果您需要格式化标签中的数字(例如,设置为百分比,添加千位分隔符等),那么即使在新版本中,您也绝对需要一个ChartCustomizer。

一个简单的例子:

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);        }    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5104866.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存