package com.ygl.chart.pie;
import java.awt.Font;
import java.text.NumberFormat;
import javax.servlet.http.HttpSession;
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.plot.PiePlot3D;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.util.Rotation;
public class PieChart {
public static String getPieChart(HttpSession session)throws Exception{
DefaultPieDataset dataset=new DefaultPieDataset();
dataset.setValue("礦難", 1000);
dataset.setValue("酒駕", 800);
dataset.setValue("醫療事故", 400);
dataset.setValue("其他",100);
JFreeChart chart=ChartFactory.createPieChart3D("非正常死亡人數",dataset,true,true,true);
//***********************開始********************
// 副标題
chart.addSubtitle(new TextTitle("2015年度"));
PiePlot pieplot=(PiePlot)chart.getPlot();
pieplot.setLabelFont(new Font("宋體",0,11));
// 設定餅圖是圓的(true),還是橢圓的(false);預設為true
pieplot.setCircular(true);
// 沒有資料的時候顯示的内容
pieplot.setNoDataMessage("無資料顯示");
StandardPieSectionLabelGenerator standarPieIG = new StandardPieSectionLabelGenerator("{0}:({1}.{2})", NumberFormat.getNumberInstance(), NumberFormat.getPercentInstance());
pieplot.setLabelGenerator(standarPieIG);
//對某項資料進行突出顯示
pieplot.setExplodePercent("醫療事故", 0.23);
PiePlot3D pieplot3d = (PiePlot3D)chart.getPlot();
//設定開始角度
pieplot3d.setStartAngle(120D);
//設定方向為”順時針方向“
pieplot3d.setDirection(Rotation.CLOCKWISE);
//設定透明度,0.5F為半透明,1為不透明,0為全透明
pieplot3d.setForegroundAlpha(0.7F);
//***************結束********************************
String filename=ServletUtilities.saveChartAsPNG(chart, 700, 500,null, session);
return filename;
}
}
//*******************************************************************************