JFreeChart开发各种图表
来源:互联网 发布:网页版 行情软件 编辑:程序博客网 时间:2024/04/19 21:05
JFreeChart是一组功能强大、灵活易用的Java绘图API,使用它可以生成多种通用性的报表,包括柱状图、饼图、曲线图、甘特图等。它能够用在Swing和Web等中制作自定义的图表或报表,并且得到广泛的应用。本文将通过引领读者学习在JFreeChart中饼图、柱状图和曲线图的进阶应用,来达到熟练使用JFreeChart的目的。
一. 下载与环境配置
1. 下载JFreeChart
JFreeChart是开放源代码的免费软件,但是它的支持文档需要付费才能得到。其下载地址为:http://sourceforge.net/project/showfiles.php?group_id=15494,当前最新版本为1.0.6。笔者下载的是1.0.6最新版。
说明:1)source目录:为jfreechart的源码目录;
2)lib目录:为包目录,我们需要关注的包为jfreechart-1.0.6.jar、gnujaxp.jar和jcommon-1.0.10.jar这三个包;
3)根目录下的jfreechart-1.0.6-demo.jar是例子程序,大家双击后可看到其中有很多例子的运行结果。
2. 环境配置
笔者的开发环境如下:
JDK:1.5
MyEclipse:5.1.1 GA
Tomcat:5.5.28
为了后续的“用JFreeChart创建基于 Web的图表”的一个例子的展示,我们在MyEclipse中创建一个名为jfreechart的Web工程。将下载的JFreeChart1.0.6下 lib目录下的jar包拷贝到WebRoot/WEB-INF/lib目录下。另外还需要在web.xml文件中增加如下配置 <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>/DisplayChart</url-pattern>
</servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/DisplayChart</url-pattern>
</servlet-mapping>
在WebRoot目录下建立bar目录,用来存放柱状图的各个例子。首先在该目录下建立一个sample1.jsp文件,让我们来看一个简单的柱状图的例子,修改后的sample1.jsp的内容如下所示:
<%@ page contentType="text/html;charset=GB18030"%>
<%@ page import="org.jfree.chart.ChartFactory,org.jfree.chart.JFreeChart,org.jfree.chart.plot.PlotOrientation,org.jfree.chart.servlet.ServletUtilities,
<%@ page import="org.jfree.chart.ChartFactory,org.jfree.chart.JFreeChart,org.jfree.chart.plot.PlotOrientation,org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.category.CategoryDataset,org.jfree.data.general.DatasetUtilities,org.jfree.chart.plot.*,org.jfree.chart.labels.*,
org.jfree.chart.renderer.category.BarRenderer3D,java.awt.*,org.jfree.ui.*,org.jfree.chart.axis.AxisLocation"%>
<%
double[][] data = new double[][] { { 1310, 1220, 1110, 1000 },
{ 720, 700, 680, 640 }, { 1130, 1020, 980, 800 },
{ 440, 400, 360, 300 } };
String[] rowKeys = { "猪肉", "牛肉", "鸡肉", "鱼肉" };
String[] columnKeys = { "广州", "深圳", "东莞", "佛山" };
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
rowKeys, columnKeys, data);
JFreeChart chart = ChartFactory.createBarChart3D("肉类销量统计图", "肉类",
"销量", dataset, PlotOrientation.VERTICAL, true, true, false);
Font font=new Font("黑体",Font.TRUETYPE_FONT, 12);
chart.getTitle().setFont(font);//设置图表标题为中文
CategoryPlot plot = chart.getCategoryPlot(); //设置网格背景颜色 plot.setBackgroundPaint(Color.white);
// 设置网格竖线颜色 plot.setDomainGridlinePaint(Color.pink);
// 设置网格横线颜色 plot.setRangeGridlinePaint(Color.pink);
// 显示每个柱的数值,并修改该数值的字体属性
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
//x轴标题设置
plot.getDomainAxis().setLabelFont(font);//设置轴标题
plot.getDomainAxis().setTickLabelFont(font);//设置轴数值
//y轴标题设置
plot.getRangeAxis().setLabelFont(font);
plot.getRangeAxis().setLabelFont(font);
renderer.setBaseLegendTextFont(font);//设置rooKeys显示中文
// 默认的数字显示在柱子中,通过如下两句可调整数字的显示
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
renderer.setItemLabelAnchorOffset(10D);
// 设置每个地区所包含的平行柱的之间距离 //
renderer.setItemMargin(0.3);
plot.setRenderer(renderer);
// 设置地区、销量的显示位置 //将下方的“肉类”放到上方 plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
// 将默认放在左边的“销量”放到右方 plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
%>
<img src="<%=graphURL%>" width=700 height=500 border=0 usemap="#<%= filename %>">
<%
double[][] data = new double[][] { { 1310, 1220, 1110, 1000 },
{ 720, 700, 680, 640 }, { 1130, 1020, 980, 800 },
{ 440, 400, 360, 300 } };
String[] rowKeys = { "猪肉", "牛肉", "鸡肉", "鱼肉" };
String[] columnKeys = { "广州", "深圳", "东莞", "佛山" };
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
rowKeys, columnKeys, data);
JFreeChart chart = ChartFactory.createBarChart3D("肉类销量统计图", "肉类",
"销量", dataset, PlotOrientation.VERTICAL, true, true, false);
Font font=new Font("黑体",Font.TRUETYPE_FONT, 12);
chart.getTitle().setFont(font);//设置图表标题为中文
CategoryPlot plot = chart.getCategoryPlot(); //设置网格背景颜色 plot.setBackgroundPaint(Color.white);
// 设置网格竖线颜色 plot.setDomainGridlinePaint(Color.pink);
// 设置网格横线颜色 plot.setRangeGridlinePaint(Color.pink);
// 显示每个柱的数值,并修改该数值的字体属性
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
//x轴标题设置
plot.getDomainAxis().setLabelFont(font);//设置轴标题
plot.getDomainAxis().setTickLabelFont(font);//设置轴数值
//y轴标题设置
plot.getRangeAxis().setLabelFont(font);
plot.getRangeAxis().setLabelFont(font);
renderer.setBaseLegendTextFont(font);//设置rooKeys显示中文
// 默认的数字显示在柱子中,通过如下两句可调整数字的显示
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
renderer.setItemLabelAnchorOffset(10D);
// 设置每个地区所包含的平行柱的之间距离 //
renderer.setItemMargin(0.3);
plot.setRenderer(renderer);
// 设置地区、销量的显示位置 //将下方的“肉类”放到上方 plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
// 将默认放在左边的“销量”放到右方 plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
%>
<img src="<%=graphURL%>" width=700 height=500 border=0 usemap="#<%= filename %>">
生成的柱状图如下所示
- JFreeChart开发各种图表
- Java图表开发-JFreeChart
- 使用JfreeChart开发图表经验总结
- 使用JfreeChart开发图表经验总结
- 使用Jfreechart开发图表应用程序
- 利用JFreeChart进行图表开发
- Ireport+jfreechart+Jasperreport开发图表
- Ireport+jfreechart+Jasperreport开发图表
- jfreechart各种图表生成源码练习
- 使用JFreeChart生成各种样式的图表
- 使用JfreeChart开发图表经验总结(含源码)
- 使用JfreeChart开发图表经验总结 转帖
- 项目中用jfreechart插件开发统计图表
- 使用JFreeChart整合Struts2开发图表
- JFreeChart图表
- JFreeChart logoJava图表 JFreeChart
- JFreeChart各种图表练习(已修改bug)
- 使用Jfreechart在jsp程序里面开发图表应用程序
- 解决 SAP IDES R3 471 收藏夹乱码问题
- 8
- 中文转拼音缩写 c#
- 解决问题Can’t connect to local MySQL server through socket
- 如何做一个标记为安全的ACTIVEX控件
- JFreeChart开发各种图表
- Oracle database link and synonym
- JSP中URL中文乱码问题!get提交时,服务器端乱码,url带中文参数乱码 [2]
- Oracle PL/SQL管理LDAP服务器(DBMS_LDAP包的使用)
- test
- 无线基础知识-详细
- Mysql数据备份以及异地存储
- 网络DNS域名转换成IP地址
- 消息队列(Message Queue)简介及其使用