您的位置:首页 > 编程语言 > Java开发

使用JFreeChart绘制饼图

2015-12-20 10:30 363 查看
  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,工程文件的布局如下:


图(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息