使用JFreeChart绘制饼图

  JFreeChart是一款开源的Java图表绘制工具,其图表种类丰富、接口通俗易懂、支持多种显示方式,如application、applets、servlet和JSP。可以很方便地绘制饼图、双轴图、折线图、柱形图、气泡图、环形图和时序图等等。下面介绍用JFreeChart绘制饼图。
  1.下载JFreeChart包,地址:http://download.csdn.net/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,工程文件的布局如下:

使用JFreeChart绘制饼图_第1张图片 图(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);

    }


}

  
  效果如下:

使用JFreeChart绘制饼图_第2张图片 图(2) 带有提示功能的饼图
  说明:对于Java工程,语句File f = new File(“Hello.txt”),文件Hello.txt既可以采用绝对路径,也可以采用相对路径。当采用相对路径时,路径的起点是.classpath配置文件里<classpathentry kind=”src” path=”src”/>的path属性值:src,如图(3)所示:
   使用JFreeChart绘制饼图_第3张图片 图(3)文件 .classpath里【path属性】指出了相对路径的起点: src

你可能感兴趣的:(java,jfreechart,相对路径,饼图)