如何在条形图中显示每个栏的栏值? [英] How to display bar value for each bar in a bar graph?

查看:111
本文介绍了如何在条形图中显示每个栏的栏值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



有必要查看条形图中条形的精确值,而不是Y轴的近似值。可能是做了什么?



感谢您的阅读! 3.7.6您可以在BarPlot属性下选中显示标签框。



在之前的版本(3.1.4)中,我不得不创建一个ChartCustomizer类。

如果你需要格式化标签中的数字(例如,百分比,添加千位分隔符等),那么您肯定需要ChartCustomizer,即使在新版本中也是如此。



简单例如:

  import java.text.NumberFormat; 

导入net.sf.jasperreports.engine.JRChart;
导入net.sf.jasperreports.engine.JRChartCustomizer;

导入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实现JRChartCustomizer {
$ b $ public void customize(JFreeChart chart,JRChart jasperChart){
CategoryPlot plot = chart.getCategoryPlot();
BarRenderer渲染器=(BarRenderer)plot.getRenderer();

CategoryItemRenderer catRenderer =((CategoryItemRenderer)renderer);
catRenderer.setBaseItemLabelGenerator(new NumberLabelGenerator(,NumberFormat.getInstance()));





静态类NumberLabelGenerator extends AbstractCategoryItemLabelGenerator实现CategoryItemLabelGenerator {
public NumberLabelGenerator(String labelFormat,
NumberFormat formatter,NumberFormat percentFormatter){
super(labelFormat,formatter,percentFormatter);


保护NumberLabelGenerator(字符串labelFormat,NumberFormat格式化程序){
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);
返回formatter.format(b);
}

}
}


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.

How can that be possibly done?

Thanks for reading!

解决方案

In iReport 3.7.6 you can just check "Show Labels" box under BarPlot properties.

In a prior version (3.1.4), I had to create a ChartCustomizer class.

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.

A simple example:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆