jfreechart 饼图


package realtimeMonitor;

import java.awt.Color;
import java.awt.Font;
import java.awt.RenderingHints;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URISyntaxException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.json.JSONException;

public class SwapSpacePie {
	 public static void createPieChart() throws NumberFormatException, JSONException, IOException {   
	        //用工厂类创建饼图   
	        JFreeChart pieChart = ChartFactory.createPieChart("SwapSpacePie:",   
	                createDataset(), true, true, false);   
	        // RenderingHints做文字渲染参数的修改   
	        // VALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关闭.   
	        pieChart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,   
	                RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);   
	        //得到饼图的Plot对象   
	        PiePlot piePlot = (PiePlot) pieChart.getPlot();   
	        setSection(piePlot);   
	        setLabel(piePlot);   
	        setNoDataMessage(piePlot);   
	        setNullAndZeroValue(piePlot);   
	                                //将饼图显示在图像界面上   
	        FileOutputStream ous = null;
	        String filePath="";//绝对路径
	        String webPath="WarnImages/swap_space_pie.png";//"+request.getSession().getId()+"
	        try {
				filePath = Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath();
				filePath =filePath.replace("WEB-INF/classes/", "");
				filePath += webPath;
			//	System.out.println(filePath);
			} catch (URISyntaxException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			try {
			        if (null != pieChart) {   
			        	ous = new FileOutputStream(filePath);
			            ChartUtilities.writeChartAsPNG(ous, pieChart, 400, 200);
			            //ous.flush();   
			        }  
		        } catch (IOException e) {
					e.printStackTrace();
				} // 生成图片
				finally {
					try {
						ous.close();// 最后关闭文件流
					} catch (IOException e) {
						e.printStackTrace();
					}
				} 
	    }   
	  
	    public static DefaultPieDataset createDataset() throws NumberFormatException, JSONException, IOException {   
	        //设置数据   
	        DefaultPieDataset pieDataset = new DefaultPieDataset();   
	        pieDataset.setValue("已使用", Integer.parseInt(ResolveJSONForShell.resolveJSONForSwapSpace()[0]));   
	        pieDataset.setValue("未使用", Integer.parseInt(ResolveJSONForShell.resolveJSONForSwapSpace()[1])); 
	        return pieDataset;   
	    }   
	  
	    public static void setSection(PiePlot pieplot) {   
	        //设置扇区颜色   
	        pieplot.setSectionPaint("已使用", new Color(160, 160, 255));   
	        pieplot.setSectionPaint("未使用", new Color(128, 128, 223));   
	        //设置扇区分离显示   
	        pieplot.setExplodePercent("已使用", 0.2D);   
	        //设置扇区边框不可见   
	        pieplot.setSectionOutlinesVisible(false);   
	    }   
	  
	    public static void setLabel(PiePlot pieplot) {   
	        //设置扇区标签显示格式:关键字:值(百分比)   
	        pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(   
	                "{0}:{1}({2} percent)"));   
	        //设置扇区标签颜色   
	        pieplot.setLabelBackgroundPaint(new Color(220, 220, 220));   
	        pieplot.setLabelFont((new Font("宋体", Font.PLAIN, 12)));   
	  
	    }   
	  
	    public static void setNoDataMessage(PiePlot pieplot) {   
	        //设置没有数据时显示的信息   
	        pieplot.setNoDataMessage("无数据");   
	        //设置没有数据时显示的信息的字体   
	        pieplot.setNoDataMessageFont(new Font("宋体", Font.BOLD, 14));   
	        //设置没有数据时显示的信息的颜色   
	        pieplot.setNoDataMessagePaint(Color.red);   
	    }   
	  
	    public static void setNullAndZeroValue(PiePlot piePlot) {   
	        //设置是否忽略0和null值   
	         piePlot.setIgnoreNullValues(true);   
	         piePlot.setIgnoreZeroValues(true);   
	    }   
	    
	    private static int randomNum()   
	    {      
	        System.out.println((Math.random()*10+5));         
	        return (int)(Math.random()*10+5);   
	    }
}


你可能感兴趣的:(java,json,Web,.net,jfreechart)