使用JFreeChart绘制饼图

  JFreeChart是一款开源的Java图表绘制工具,其图表种类丰富、接口通俗易懂、支持多种显示方式,如application、applets、servlet和JSP。可以很方便地绘制饼图、双轴图、折线图、柱形图、气泡图、环形图和时序图等等。下面介绍用JFreeChart绘制饼图。
  1.下载JFreeChart包,地址:http://download.youkuaiyun.com/download/wangshuxuncom/7119629 ,这里用到了里面的两个jar文件:jcommon-1.0.16.jar和 jfreechart-1.0.13.jar。
  2. 打开Eclipse,新建一个Java工程:ChartOne,在ChartOne/src下创建两个package:com.tu和img,右击包com.tu –》new/Class —》名称为:ChartZi,右击img —》import —》File System –》找到backgroundImage.jpg —>OK,工程文件的布局如下:

这里写图片描述
图(1) 引用两个.jar包:jcommon-1.0.16.jar、jfreechart-1.0.13.jar

  3. 绘制饼图的源代码:
  //ChartZi.java  

package com.tu;

import java.awt.Font;
import java.awt.Image;
import java.io.File;


import javax.imageio.ImageIO;

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.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;

public class ChartZi {
    public JFreeChart getJFreeChart(){
        PieDataset dataset = getPieDataset();
        JFreeChart chart = ChartFactory.createPieChart("2015.8月份销售排行", dataset,
                true, true, false);
        //关闭锯齿形
        chart.setAntiAlias(false);
        return chart;       
    }

    //设置图形上的字体
    public void setPiePoltFont(JFreeChart chart){
        //饼图
        PiePlot piePlot = (PiePlot)chart.getPlot();
        piePlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));

        //标题
        TextTitle textTitle = chart.getTitle();
        textTitle.setFont(new Font("宋体", Font.BOLD, 20));

        //图例
        LegendTitle legendTitle = chart.getLegend();
        legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 12));    

    }

    //设置百分比数字
    public void setPiePoltNum(JFreeChart chart){
        PiePlot piePlot = (PiePlot)chart.getPlot();
        piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{1}本"));
    }

    //设置背景
    public void setBackgroundImage(JFreeChart chart){
        Image image = null;
        try {
            //读取图片
            //绝对路径
            String path = "G:/Workspaces/Eclipse/Chap1/ChartOne/src/img/backgroundImage.jpg";
            String path3;   
            //相对路径,以配置文件.classpath为参考点
            path3 = "src/img/backgroundImage.jpg";

            image = ImageIO.read(new File(path3));

        } catch (Exception e) {
            e.printStackTrace();
        }

        PiePlot piePlot = (PiePlot)chart.getPlot();
        //设置饼图背景图
        piePlot.setBackgroundImage(image);

    }

    //创建饼图表的数据集
    private PieDataset getPieDataset(){
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("JAVA从入门到精通(第2版)", 500);
        dataset.setValue("视频学JAVA", 800);
        dataset.setValue("JAVA全能速查宝典", 1000);

        return dataset;     
    }


    public static void main(String[] args) {
        ChartZi demo = new ChartZi();
        JFreeChart chart = demo.getJFreeChart();
        demo.setPiePoltFont(chart);
        demo.setPiePoltNum(chart);
        demo.setBackgroundImage(chart);
        ChartFrame chartFrame = new ChartFrame("JFreeChart的例子", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);

    }


}

  
  效果如下:

这里写图片描述
图(2) 带有提示功能的饼图

  说明:对于Java工程,语句File f = new File(“Hello.txt”),文件Hello.txt既可以采用绝对路径,也可以采用相对路径。当采用相对路径时,路径的起点是.classpath配置文件里<classpathentry kind=”src” path=”src”/>的path属性值:src,如图(3)所示:
  
这里写图片描述
图(3)文件 .classpath里【path属性】指出了相对路径的起点: src

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sanqima

一键三连,多多益善

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

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

打赏作者

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

抵扣说明:

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

余额充值