午后星期午

JFreeChart 生成 饼状图(Struts2 + Maven3 + JFreeChart)

接上一篇随笔 JFreeChart 生成 柱状图 ,环境及其配置不变,只是将生成柱状图的核心类 CylinderAction 替换成 PieAction,让 PieAction 来负责饼状图的生成,看下代码:



package com.fancy.action;

import java.awt.Color;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.general.DefaultPieDataset;
/**
 * -----------------------------------------
 * @描述  饼状图
 * @作者  fancy
 * @邮箱  fancydeepin@yeah.net
 * @日期  2012-8-7 <p>
 * -----------------------------------------
 
*/

public class PieAction extends BaseAction{

    
private static final long serialVersionUID = 1L;
    
private String fileName;
    
    
public String execute() throws Exception{
        
        
//创建Dataset对象
        DefaultPieDataset dataset = new DefaultPieDataset();
        
//模拟数据
        dataset.setValue("E-1区"50);
        dataset.setValue(
"E-2区"150);
        dataset.setValue(
"E-3区"80);
        dataset.setValue(
"E-4区"140);
        dataset.setValue(
"E-5区"180);
        dataset.setValue(
"E-6区"130);
        dataset.setValue(
"E-7区"100);
        
//创建3D饼状图
        JFreeChart chart = ChartFactory.createPieChart3D("2011年A产品销售量", dataset, truefalsefalse);
        
//设置背景颜色
        chart.setBackgroundPaint(Color.WHITE);
        
//保存图表
        fileName = ServletUtilities.saveChartAsPNG(chart, 500300null, getHttpSession());
        
return "pie";
    }

    
    
public String getFileName() {
        
return fileName;
    }


}



将 cylinder.jsp 拷贝一份名字改成 pie.jsp,其余不变,访问:http://localhost:8080/jfreechart-demo/pie.html 的结果如图示:



从上图可以看出A产品在每个区销售的大概份额,但是默认并没有给显示所占的百分比,下面通过添加代码来使得所占百分比能够显示出来:


package com.fancy.action;

import java.awt.Color;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.general.DefaultPieDataset;
/**
 * -----------------------------------------
 * @描述  饼状图
 * @作者  fancy
 * @邮箱  fancydeepin@yeah.net
 * @日期  2012-8-7 <p>
 * -----------------------------------------
 
*/

public class PieAction extends BaseAction{

    
private static final long serialVersionUID = 1L;
    
private String fileName;
    
    
public String execute() throws Exception{
        
        
//创建Dataset对象
        DefaultPieDataset dataset = new DefaultPieDataset();
        
//模拟数据
        dataset.setValue("E-1区"50);
        dataset.setValue(
"E-2区"150);
        dataset.setValue(
"E-3区"80);
        dataset.setValue(
"E-4区"140);
        dataset.setValue(
"E-5区"180);
        dataset.setValue(
"E-6区"130);
        dataset.setValue(
"E-7区"100);
        
//创建3D饼状图
        JFreeChart chart = ChartFactory.createPieChart3D("2011年AA产品销售量", dataset, truefalsefalse);
        
//设置背景颜色
        chart.setBackgroundPaint(Color.WHITE);
        
        PiePlot plot 
= (PiePlot)chart.getPlot();
        
// 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值,{2} 表示所占比例 ,小数点后两位 
        plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(),new DecimalFormat("0.00%")));
        
        
//保存图表
        fileName = ServletUtilities.saveChartAsPNG(chart, 500300null, getHttpSession());
        
return "pie";
    }

    
    
public String getFileName() {
        
return fileName;
    }


}



OK,再次访问的结果如图示:






   [ 转载出处:http://www.blogjava.net/fancydeepin ]

posted on 2013-12-31 13:47 午后星期午 阅读(71) 评论(0)  编辑  收藏 所属分类: JavaEE


只有注册用户登录后才能发表评论。


网站导航: