第一步:导包
itext-2.0.1.jar,jcommon-1.0.9.jar,jfreechart-1.0.5-experimental.jar,jfreechart-1.0.5-swt.jar,jfreechart-1.0.5.jar,swtgraphics2d.jar
第二步:配置xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
第三步:写代码
第一个例子:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.category.DefaultCategoryDataset" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'test1.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
//产生一个数据集的收集器
DefaultCategoryDataset dataset =
new DefaultCategoryDataset();
//收集数据
dataset.setValue(300,"广州","橡胶");
dataset.setValue(600,"襄樊","大头菜");
dataset.setValue(500,"宜昌","柑橘");
dataset.setValue(400,"黄石","铁矿石");
dataset.setValue(300,"乌鲁木齐","哈密瓜");
dataset.setValue(500,"海口","芒果");
//设计图片的解决方案
JFreeChart chart =
ChartFactory.createStackedBarChart(
"水果销售图", //图标的标题
"水果名称", //目标轴的显示标签
"销售量", //数值轴的标签
dataset, //数据集
PlotOrientation.VERTICAL,//图标的方向:水平 垂直
true, //是否显示图例(对于简单的柱状图必须是false)
false, //是否生成工具
false //是否生成URL连接
);
//具体生成图片的设置
String filename =
ServletUtilities.saveChartAsJPEG(
chart, //创建图形面板
500, //设置图片大小
300,
null, //默认路径
session
);
String URL = request.getContextPath()
+"/servlet/DisplayChart?filename="+filename;
%>
<img src="<%=URL %>" width="500" height="300"
border="0" usemap="#filename" />
</body>
</html>
第二个例子:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="org.jfree.data.general.DefaultPieDataset"%>
<%@ page import="org.jfree.chart.*"%>
<%@ page import="org.jfree.chart.plot.*"%>
<%@ page import="org.jfree.chart.servlet.ServletUtilities"%>
<%@ page import="org.jfree.chart.labels.StandardPieToolTipGenerator"%>
<%@ page import="org.jfree.chart.urls.StandardPieURLGenerator"%>
<%@ page import="org.jfree.chart.entity.StandardEntityCollection"%>
<%@ page import="java.io.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>饼状图</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
DefaultPieDataset data =
new DefaultPieDataset();
data.setValue("高中以下",300);
data.setValue("高中",200);
data.setValue("专科",400);
data.setValue("本科",500);
data.setValue("硕士",100);
PiePlot3D plot =
new PiePlot3D(data);//产生一个3D视图
JFreeChart chart = new JFreeChart("",
JFreeChart.DEFAULT_TITLE_FONT,//设置字体
plot,//加入3D视图
true //是否显示图例
);
//生成map图片,需要用ChartRenderingInfo
ChartRenderingInfo info =
new ChartRenderingInfo(
new StandardEntityCollection());
//StandardEntityCollection建立一个map标准的实例集
String filename =
ServletUtilities.saveChartAsPNG(
chart,
500,
300,
info,
session
);
String URL = request.getContextPath()
+"/servlet/DisplayChart?filename="+filename;
%>
<img src="<%=URL %>" width="500" height="300"
border="0" usemap="#filename" />
</body>
</html>
第三个例子:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import = "org.jfree.chart.ChartFactory"%>
<%@ page import = "org.jfree.chart.JFreeChart"%>
<%@ page import = "org.jfree.chart.plot.PlotOrientation"%>
<%@ page import = "org.jfree.data.category.DefaultCategoryDataset"%>
<%@ page import = "org.jfree.chart.axis.NumberAxis"%>
<%@ page import = "org.jfree.chart.block.BlockBorder"%>
<%@ page import = "org.jfree.chart.plot.CategoryPlot"%>
<%@ page import = "org.jfree.ui.RectangleEdge"%>
<%@ page import = "org.jfree.chart.renderer.category.LineAndShapeRenderer"%>
<%@ page import = "org.jfree.chart.servlet.ServletUtilities"%>
<%@ page import = "org.jfree.chart.title.LegendTitle"%>
<%@ page import="sun.jdbc.odbc.ee.DataSource"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>血压分布图</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
String series1 = "First";
String series2 = "Second";
String series3 = "Third";
//x轴的值
String type1 = "Type 1";
String type2 = "Type 2";
String type3 = "Type 3";
String type4 = "Type 4";
String type5 = "Type 5";
String type6 = "Type 6";
String type7 = "Type 7";
String type8 = "Type 8";
DefaultCategoryDataset dataset =
new DefaultCategoryDataset();
dataset.addValue(1.0,series1,type1);
dataset.addValue(2.0,series1,type2);
dataset.addValue(3.0,series1,type3);
dataset.addValue(4.0,series1,type4);
dataset.addValue(5.0,series1,type5);
dataset.addValue(6.0,series1,type6);
dataset.addValue(7.0,series1,type7);
dataset.addValue(8.0,series1,type8);
dataset.addValue(4.0,series2,type1);
dataset.addValue(2.0,series2,type2);
dataset.addValue(3.0,series2,type3);
dataset.addValue(6.0,series2,type4);
dataset.addValue(4.0,series2,type5);
dataset.addValue(1.0,series2,type6);
dataset.addValue(8.0,series2,type7);
dataset.addValue(7.0,series2,type8);
dataset.addValue(5.0,series3,type1);
dataset.addValue(1.0,series3,type2);
dataset.addValue(3.0,series3,type3);
dataset.addValue(6.0,series3,type4);
dataset.addValue(5.0,series3,type5);
dataset.addValue(8.0,series3,type6);
dataset.addValue(2.0,series3,type7);
dataset.addValue(3.0,series3,type8);
JFreeChart chart =
ChartFactory.createLineChart(
"血压分布图",
"type",
"value",
dataset,
PlotOrientation.VERTICAL,
true,
false,
false
);
LegendTitle legend =
chart.getLegend();//图例显示的位置
legend.setPosition
(RectangleEdge.BOTTOM);//底部
legend.setBorder(BlockBorder.NONE);// 没有
CategoryPlot plot =
chart.getCategoryPlot();//设置对图片的精细操作
NumberAxis rangAxis =
(NumberAxis)plot.getRangeAxis();//获得一个对y轴操作的实例
//用整型标记
rangAxis.setStandardTickUnits(
NumberAxis.createIntegerTickUnits());
//从0开始计数
rangAxis.setAutoRangeIncludesZero(true);
String filename = ServletUtilities.
saveChartAsPNG(chart,700,500,null,session);
String URL = request.getContextPath()
+"/servlet/DisplayChart?filename="+filename;
%>
<img src="<%=URL %>" width="700" height="500"
border="0" usemap="#filename" />
</body>
</html>