JFree是java下的一个图表库,也是生成丰富图表的一个库。下面我们来简单的学习一下这个图表库吧。
下载的地址可以去官网:
http://www.jfree.org/jfreechart/download.html
也可以在我的网盘中下载:
链接:http://pan.baidu.com/s/1bpbEwaj 密码:iu6n
要启动这个库,电脑必须是先要安装JDK1.6或以上版本
下载之后就是解压,解压后,会看到如下的文件结构
那么什么都不用想,打开README.txt文件,这里有交你如何使用JFreeChart这个库。
其中可以使用
java -jar jfreechart-1.0.19-demo.jar
这个来打开查看到几乎所有JFreeChart可以生成的图表,打开后如图所示
那么如下下载这些例子呢?
很不好意思,这些都是需要45刀的价格才能购买的到,README.txt中有提到。
一般生成表格的步骤如下:
1.创建一个图表的模型,并设置数据
2.调用ChartFactory.createXXXChart()方法来创建表格
3.调用ChartUtilities.writeChartAsJPEG()方法来输出到图片中
代码如下:
package dengta.jfreechart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
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 java.awt.*;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class TestPieChart {
public static void main(String[] args) throws Exception {
DefaultPieDataset dataset = getDataSet();
JFreeChart chart = ChartFactory.createPieChart(
"Book Learning",
dataset,
true,
true,
false
);
chart.setTitle(new TextTitle("Book Lib",new Font("宋体",Font.BOLD+Font.ITALIC,20)));
LegendTitle legendTitle = chart.getLegend(0);//设置Legend
legendTitle.setItemFont(new Font("宋体",Font.BOLD,14));
PiePlot plot = (PiePlot) chart.getPlot();
OutputStream os = new FileOutputStream("Book.jpeg");
ChartUtilities.writeChartAsJPEG(os,chart,400,300);
os.close();
}
/**
* 创建数据集
* @return
*/
private static DefaultPieDataset getDataSet() {
DefaultPieDataset dpd=new DefaultPieDataset(); //建立一个默认的饼图
dpd.setValue("Java", 30); //输入数据
dpd.setValue("iOS", 25);
dpd.setValue("Android", 60);
dpd.setValue("python", 10);
return dpd;
}
}
生成的图片如下
要将图片嵌入到jsp页面中可以使用如下所示代码
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import="org.jfree.data.general.DefaultPieDataset,org.jfree.chart.ChartFactory
,org.jfree.chart.JFreeChart,org.jfree.chart.servlet.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<%
DefaultPieDataset dpd = new DefaultPieDataset();
dpd.setValue("管理人员", 25);
dpd.setValue("市场人员", 25);
dpd.setValue("开发人员", 45);
dpd.setValue("其他人员", 10);
JFreeChart chart = ChartFactory.createPieChart("某公司组织结构图",dpd, true, false, false);
String fileName = ServletUtilities.saveChartAsPNG(chart,800,600,session);
//ServletUtilities是面向web开发的工具类,返回一个字符串文件名,文件名自动生成,生成好的图片会自动放在服务器(tomcat)的临时文件下(temp)
String url = request.getContextPath() + "/DisplayChart?filename=" + fileName;
//根据文件名去临时目录下寻找该图片,这里的/DisplayChart路径要与配置文件里用户自定义的<url-pattern>一致
%>
<img src="<%= url %>" width="800" height="600">
</body>
</html>
其实大概就是这样,具体的例子可以参考源码的Demo,或者花钱直接购买源代码中的图表。