饼图1

package com.hoocy.struts;   
  
import java.awt.Color;   
import java.awt.Font;   
import java.awt.RenderingHints;   
import java.io.IOException;   
import java.io.UnsupportedEncodingException;   
import java.text.DecimalFormat;   
import java.text.NumberFormat;   
import org.jfree.chart.ChartFactory;   
import org.jfree.chart.ChartFrame;   
import org.jfree.chart.JFreeChart;   
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;   
import org.jfree.chart.plot.PiePlot;   
import org.jfree.chart.title.TextTitle;   
import org.jfree.data.general.DefaultPieDataset;   
  
public class TestPieChart {   
    /**  
     * 创建饼图对象的JFreeChart 对象  
     *   
     * @param condVo  
     * @param list  
     * @return  
     * @throws Exception  
     */  
    public static void createPieChart() throws Exception {   
  
        JFreeChart[] jfreechart = new JFreeChart[2];   
  
        // 饼图的标题   
        String ChartTitle = "";   
  
        // 用工厂类创建饼图   
        JFreeChart pieChart = ChartFactory.createPieChart(ChartTitle,   
                createPieDataset(), true, true, false);   
  
        // RenderingHints做文字渲染参数的修改   
        // VALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关闭.   
        pieChart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,   
                RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);   
  
        // 设置Legend的位置 图例的位置   
        // ((JFreeChart) pieChart).getLegend().setPosition(RectangleEdge.RIGHT);   
  
        // 设置图片背景色   
        pieChart.setBackgroundPaint(new Color(191, 191, 255));   
  
        // 设置图标题的字体重新设置title   
        Font font = new Font("隶书", Font.BOLD, 25);   
        TextTitle title = new TextTitle(ChartTitle);   
        title.setFont(font);   
        // pieChart.setTitle(title); //用来控制Chart标题的   
  
        // 得到饼图的Plot对象   
        PiePlot piePlot = (PiePlot) pieChart.getPlot();   
  
        // 指定饼图轮廓线的颜色   
        piePlot.setBaseSectionOutlinePaint(Color.BLACK);   
        piePlot.setBaseSectionPaint(Color.BLACK);   
  
        // 设置背景区域背景色   
        piePlot.setBackgroundPaint(new Color(191, 191, 255));   
        setSection(piePlot);   
        setLabel(piePlot);   
  
        // 设置没数据显示信息   
        setNoDataMessage(piePlot);   
           
           
           
           
           
           
        // 设置对于null数据和0数据的处理   
        setNullAndZeroValue(piePlot);   
        jfreechart[0] = pieChart;   
        ChartFrame frame = new ChartFrame("TestPieChart", pieChart);   
        frame.pack();   
        frame.setVisible(true);   
    }   
  
    /**  
     * 创建饼图对象的数据源 DefaultPieDataset  
     *   
     * @param condVo  
     * @param list  
     * @param parse  
     * @return  
     * @throws UnsupportedEncodingException  
     * @throws Exception  
     */  
    public static DefaultPieDataset createPieDataset()   
            throws UnsupportedEncodingException, Exception {   
        DefaultPieDataset pieDataset = new DefaultPieDataset();   
  
        String[] TypeName = { "java", "c++", "vb", "sheel", "ruby" };   
        for (int i = 0; i < TypeName.length - 2; i++) {   
            pieDataset.setValue(TypeName[i].toString(), 0);   
        }   
  
        pieDataset.setValue("sheel", 0);   
        pieDataset.setValue("ruby", null);   
        // pieDataset.   
  
        return pieDataset;   
    }   
  
    /**  
     * plot对象设置的方法,提供配置饼图扇区颜色的方法  
     *   
     * @param pieplot  
     */  
    @SuppressWarnings("deprecation")   
    public static void setSection(PiePlot pieplot) {   
        // 扇区颜色设置   
        pieplot.setSectionPaint(0, new Color(153, 153, 255));   
        pieplot.setSectionPaint(1, new Color(153, 53, 102));   
        pieplot.setSectionPaint(2, new Color(255, 255, 204));   
        pieplot.setSectionPaint(3, new Color(204, 255, 255));   
        pieplot.setSectionPaint(4, new Color(102, 0, 102));// 紫色   
        pieplot.setSectionPaint(5, new Color(255, 128, 128));// 桃红   
        pieplot.setSectionPaint(6, new Color(0, 102, 204));// 蓝   
        pieplot.setSectionPaint(7, new Color(204, 204, 255));   
  
        // 设置扇区分离显示   
        // pieplot.setExplodePercent("测试数据1", 0.2D);   
        // 设置扇区边框不可见   
        // pieplot.setSectionOutlinesVisible(false);   
    }   
  
    /**  
     * 设置扇区标题格式的方法类  
     *   
     * @param pieplot  
     */  
    public static void setLabel(PiePlot pieplot) {   
        // 设置扇区标签显示格式:关键字:值(百分比)   
        // pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(   
        // "{0}:{1}({2} percent)"));   
        pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(   
                "{0} {2}", NumberFormat.getNumberInstance(), new DecimalFormat(   
                        "0.00%")));   
        // 设置扇区标签颜色   
        pieplot.setLabelBackgroundPaint(new Color(220, 220, 220));   
        pieplot.setLabelFont((new Font("宋体", Font.PLAIN, 15)));// 设置扇区标签字体大小   
  
    }   
  
    /**  
     * 设置饼图对象没数据时所显示内容和字体  
     *   
     * @param pieplot  
     */  
    public static void setNoDataMessage(PiePlot pieplot) {   
        // 设置没有数据时显示的信息   
        pieplot.setNoDataMessage("无数据");   
        // 设置没有数据时显示的信息的字体   
        pieplot.setNoDataMessageFont(new Font("宋体", Font.ITALIC, 20));   
        // 设置没有数据时显示的信息的颜色   
        pieplot.setNoDataMessagePaint(Color.orange);   
           
    }   
  
    /**  
     * 设置饼图对象数据是否忽略0和null值  
     *   
     * @param piePlot  
     */  
    public static void setNullAndZeroValue(PiePlot piePlot) {   
        // 设置是否忽略0和null值   
        // piePlot.setIgnoreNullValues(false);   
        // piePlot.setIgnoreZeroValues(false);   
    }   
  
    public static void main(String[] args) throws IOException, Exception {   
        createPieChart();   
    }   
  
}  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyondsanli

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值