当前位置:文档之家› JFreeChart1.02的使用

JFreeChart1.02的使用

JFREECHART

学习总结

目录

一、JFreeChart简介 (2)

二、JFreeChart的获取 (3)

三、JFreeChart环境配置 (3)

四、JFreeChart功能介绍 (5)

五、JFreeChart核心类库介绍 (6)

六、JFreeChart支持的图表介绍 (6)

七、JFreeChart开发 (7)

第一步:建立DataSet数据源 (8)

第二步:创造JFreeChart (9)

第三步:设置图形显示的属性 (10)

第四步:写入图片或输出界面 (11)

八、JFREECHART图片在web中的应用 (13)

8.1在eclipse中创建tomcat工程 (14)

8.2 创建web.xml (14)

8.3 配置web.xml (15)

8.4 创建含有JFreeChart图片的页面 (16)

8.5 配置server.xml (22)

8.6测试页面 (24)

九、JFreeChart使用的优缺点 (25)

1.优点: (25)

2.缺点: (26)

九、使用JfreeChart开发图表经验总结-------------------------25

十、JFreeChart中文API (25)

一、JFreeChart简介

JFreeChart是开放源代码站点https://www.doczj.com/doc/b710752768.html,上的一个JA V A项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。当在项目中客户需要图标分析时,JFreeChart便是最好的选择,JFreeChart是开源项目,可以方便的从其官方网站上获得其源代码,可以方便的与Swing相结合使用,还可以导入到Web页面中,更是可以方便的利用其工厂方法将图表写入jpeg或者png格式的图片中,本文档将简要介绍小JFreeChart的使用。

二、JFreeChart的获取

JFreeChart 是JFreeChart公司在开源网站https://www.doczj.com/doc/b710752768.html,上的一个项目,该公司的主要产品有如下:

1.JFreeReport :报表解决工具

2.JFreeChart:Java 图形解决方案(Application/Applet/Servlet/Jsp)

3.JCommon :JFreeReport和JFreeChart的公共类库

4.JFreeDesigner :JFreeReport的报表设计工具

我们可以从jfree官方网站上获取最新版本和相关资料(但是jfree的document需要40美金才能获取),获取地址:https://www.doczj.com/doc/b710752768.html,/jfreechart/index.html(同时可以获得简明介绍)

我们使用的版本:jfreechart-1.0.12.zip为例子进行说明。

三、JFreeChart环境配置

1、解压jfreechart-1.0.12.zip到指定位置,其中source是jfreechart的源码,jfreechart-1.0.12-demo.jar 是例子程序。

2、为了配置成功,我们需要关注的文件有如下三个:jfreechart-1.0.12.jar、lib\jcommon-1.0.15.jar、lib\gnujaxp.jar。JCommon-1.0.15.jar是一组有用的classes集合. 这个类库包含了以下功能: * 文本工具类(text utilities), * 用来显示关于

应用程序信息的用户界面类, * 布局定制管理器, * 一个日期选择面板, * 序列化工具类, * XML解析器支持类。

3、如果是Application开发,把上述三个文件拷贝到%JA VA_HOME%\LIB中,同时在环境变量CLASSPATH 中加入。

在开发中,还有在工程中导入jfreechart-1.0.12.jar,jcommon-1.0.15.jar,否则会在文件第一行提示有错误。

如果是WEB开发,以TOMCAT中的一个WEB项目TEST为例子说明:

把上述三个文件拷贝到TEST\WEB-INF\LIB中,然后修改TEST\WEB-INF\web.xml文件,在其中加入如下代码:

DisplayChart

org.jfree.chart.servlet.DisplayChart

DisplayChart

/servlet/DisplayChart

至此jfreechart的配置就完成了,下面就可以进行

jfreechart的开发了。这里值得提出的是jfreechart的类结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。

四、JFreeChart功能介绍

JFreeChart是一个免费的Java图表库,让开发人员开发出专业的图表显示在他们的应用程序。JFreeChart的广泛的功能包括:

?翔实的API ,支持各种各样的图表类型;

?一种灵活的设计,易于扩展,和指标均服务器端和客户端的应用;

?支持多种类型的输出,包括Swing界面,图像文件(包括PNG和JPEG格式),和矢量图形文件格式;

?JFreeChart是“开源” ,或更具体的免费软件。

使用JFREECHART能够是新下列图表:

饼图(二维和三维) , 柱状图(水平,垂直),线图,点图,时间变化图,甘特图, 股票行情图,混和图, 温度计图, 刻度图等常用商用图表。

五、JFreeChart核心类库介绍

jfreechart源码主要由两个大的包组成:org.jfree.chart和org.jfree.data。其中前者主要与图形本身有关,后者与图形显示的数据有关。

核心类主要有:

org.jfree.chart.JFreeChart:图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。JFreeChart引擎本身提供了一个工厂类用于创建不同类型的图表对象。

org.jfree.data.category.XXXDataSet:数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类。

org.jfree.chart.plot.XXXPlot:图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持。

org.jfree.chart.axis.XXXAxis:用于处理图表的两个轴:纵轴和横轴。

org.jfree.chart.render.XXXRender:负责如何显示一个图表对象。

org.jfree.chart.urls.XXXURLGenerator:用于生成Web 图表中每个项目的鼠标点击链接。

XXXXXToolTipGenerator:用于生成图象的帮助提示,

不同类型图表对应不同类型的工具提示类。

六、JFreeChart支持的图表介绍

JFreeChart支持的图表类型总结

图表类型工厂类方法数据集类型备注

柱状图createBarChart CategoryDataset

柱状图3D createBarChart3D CategoryDataset

饼图createPieChart PieDataset

饼图3D createPieChart3D PieDataset

线图createLineChart CategoryDataset

线图3D createLineChart3D CategoryDataset

复合饼图createMultiplePieChart CategoryDataset 需要设置TableOrder 复合饼图3D createMultiplePieChart3D CategoryDataset

环形图createRingChart PieDataset

瀑布图createWaterfallChart CategoryDataset 柱图特殊形式

面积图createAreaChart CategoryDataset

散点图createScatterPlot XYSeriesCollection

组织图createHistogram XYSeriesCollection

数据点阶梯图createXYStepChart XYSeriesCollection

堆积面积图createStackedAreaChart CategoryDataset

堆积柱状图createStackedBarChart CategoryDataset

堆积柱状图3D createStackedBarChart3D CategoryDataset

数据点线图createXYLineChart XYSeriesCollection

数据点面积图createXYAreaChart XYSeriesCollection

数据点阶梯面积图createXYStepAreaChart XYSeriesCollection

堆积数据点面积图createStackedXYAreaChart TableXYDataset

时序图createTimeSeriesChart XYDataset

晶片图createWaferMapChart WaferMapDataset

WindPlot createWindPlot WindDataset

极线图createPolarChart XYDataset

气泡图createBubbleChart XYZDataset

BoxAndWhiskerChart createBoxAndWhiskerChart BoxAndWhiskerXYDataset

烛台图createCandlestickChart OHLCDataset

股价图createHighLowChart OHLCDataset 2种时间线差别

甘特图createGanttChart IntervalCategoryDataset

数据点柱状图createXYBarChart IntervalXYDataset

七、JFreeChart开发

要建立一个JFreeChart图形主要有以下三个步骤(以柱图为

例):

第一步:建立DataSet数据源

BarChart使用的dataset接口是

org.jfree.data.defaultcategorydataset的dataset。使用

categorydataset的子类org.jfree.data.defaultcategorydataset,再

用addValue()方法把资料加入到dataset中,建立包含数值

的二维阵列,代码如下:

DefaultCategoryDataset dataset = new

DefaultCategoryDataset();

dataset.addValue(100, "100", "苹果");

dataset.addValue(200, "200", "梨子");

dataset.addValue(300, "300", "葡萄");

dataset.addValue(400, "400", "香蕉");

dataset.addValue(500, "500", "荔枝");

dataset.addValue(600, "600", "西瓜");

或者使用org.jfree.data.datasetutilities ,CategoryDataset dataset = DatasetUtilities.createCategoryDatas et(rowKeys, columnKeys, data);

其中:rowKeys表示X轴数据,columnKeys表示Y轴数据,data表示填充柱状图所要的实际数据(来自于数据库)。

第二步:创造JFreeChart

要用dataset创造一个JFreeChart类别,我们并不直接实例化出一个JFreeChart实例,而是使用ChartFactory工厂类来创造一个JFreeChart实例。代码如下:

JFreeChart chart = ChartFactory.createBarChart3D(

"水果产量图", //JFreeChart标题

"水果", //目录轴显示标签

"产量", //数值轴显示标签

dataset, //数据源

PlotOrientation.VERTICAL, //图表方向:水平、垂直

true, //是否是否显示图例(对于简单的柱状图是false)

false, //是否生成热点工具

false); //是否生成URL连接

第三步:设置图形显示的属性

a ) ValueAxis类,设置柱到图上下边的距离。实现方法是:ValueAxis rangeAxis = plot.getRangeAxis();

设置最高的一个柱与图片顶端的距离:

rangeAxis.setUpperMargin(0.15)

设置最低的一个柱与图片底端的距离:

rangeAxis.setLowerMargin(0.15)

b)org.jfree.chart.renderer.BarRenderer3D类,设置图形上显示的数值。实现方法如下:

BarRenderer3D renderer = new BarRenderer3D(); renderer.setBaseOutlinePaint(Color.BLACK);

设置 Wall 的颜色:

renderer.setWallPaint(Color.gray);

设置每个柱的颜色:

renderer.setSeriesPaint(0, new Color(0, 0, 255));

renderer.setSeriesPaint(1, new Color(0, 100, 255)); renderer.setSeriesPaint(2, Color.GREEN);

设置每个柱的 Outline 颜色

renderer.setSeriesOutlinePaint(0, Color.BLACK); renderer.setSeriesOutlinePaint(1, Color.BLACK); renderer.setSeriesOutlinePaint(2, Color.BLACK);

设置每个地区所包含的平行柱之间的距离

renderer.setItemMargin(0.1);

显示每个柱的数值,并修改该数值的字体属性

renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,12)); renderer.setItemLabelsVisible(true);

为图形加入超连接

renderer.setItemURLGenerator(new StandardCategoryURLGen erator());

renderer.setToolTipGenerator(new StandardCategoryToolTipGe nerator());

第四步:写入图片或输出界面

a.写入图片

利用ChartUtilities.writeChartAsJPEG(fos_jpg, //图片输出地址

1.0f,

//设置图片质量

chart, //指定chart

500,

//设置图片宽度

400);

//设置图片高度

在打开图片时,有可能出现异常,注意扑捉异常。

代码如下:

FileOutputStream fos_jpg = null;

try {

fos_jpg = new

FileOutputStream("D:fruit.jpg");

ChartUtilities.writeChartAsJPEG(fos_jpg,1 .0f, chart, 500, 400);

}finally{

try{

fos_jpg.close();

}catch (Exception e) {}

}

b.显示图片

使用ChartFrame类,

ChartFrame ChartFrame = new ChartFrame(“水果产量图”,chart);

chartFrame.pack();

chartFrame.setFont(new Font("宋体

",Font.BOLD,20));

chartFrame.setVisible(true);

柱状图实例结果输出:

其他的图创建方法都类似,但是每种图形都将对应每个dataset,所以在使用的时候注意选择创建dataset数据源。

八、JFREECHART图片在web中的应用

通过上边的介绍,我们已经知道JFreechart是很好的Java图表生成工具,利用JFreeChart可以很方便的生产饼图、折线图、柱图等图表。可以更加形象的分析数据。本部分主要介绍JFreeChart生成的图片在Web工程中的应用。

8.1在Myeclipse中创建Web工程

1、在Myeclipse中创建web工程。

8.2 创建web.xml

在Web工程目录下WEB-INF目录下,创建web.xml。具体步骤为:

1.在右击Tomcat工程目录下WEB-INF目录,选择

“new”->“File”。

2.输入file名称为web.xml,点击“finish”完成

创建。

3.在打开的file中输入以下内容:

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"https://www.doczj.com/doc/b710752768.html,/dtd/web-app_2_3.dtd">

至此完成web.xml的创建。

8.3 添加相关JAR文件

1.右击项目名选择“Build Path”,在其下拉框中选择最后一个“Config Bulid Path”。

2.选择“Libraries”。

3.然后在选择“Add External JARs…”.

4.在弹出的对话框中选择在/common/lib/jasper-runtime.jar ,jsp-api.jar,servlet-api.jar等JAR包文件。在加入JFreeChart需要的jfreechart-1.0.12.jar,jcommon-1.0.1

5.jar即可。

5.再将jfreechart-1.0.12.jar,jcommon-1.0.15.jar拷到工程目录下WEB-INF/lib文件夹中即可。

8.3 配置web.xml

在web.xml文件中间加入以下的配置。

DisplayChart

org.jfree.chart.servlet.Disp layChart

DisplayChart

/servlet/DisplayChart

8.4 创建含有JFreeChart图片的页面

1.右击Tomcat工程目录下WEB-INF目录,选择“new”

->“File”。

2.输入file名称为xyline.jsp,点击“finish”完

成创建。

3.打开File文件,在文件中输入以下代码:

<%@ page

contentType="text/html;charset=GB2312"%>

<%@ page import="org.jfree.*,

java.io.*"%>

java.awt.Font,

org.jfree.data.category.CategoryDataset, org.jfree.chart.ChartUtilities,

org.jfree.chart.renderer.category.LineAndSh apeRenderer,

https://www.doczj.com/doc/b710752768.html,bels.StandardCategoryItem LabelGenerator,

org.jfree.chart.plot.CategoryPlot,

org.jfree.data.category.DefaultCategoryData set,

org.jfree.chart.ChartFactory,

org.jfree.chart.plot.PlotOrientation,

org.jfree.chart.JFreeChart,

org.jfree.chart.servlet.ServletUtilities, org.jfree.chart.entity.StandardEntityCollec tion,

org.jfree.chart.ChartRenderingInfo,

org.jfree.chart.imagemap.StandardURLTagFrag

mentGenerator,

https://www.doczj.com/doc/b710752768.html,bels.StandardCategoryItem LabelGenerator,

org.jfree.chart.renderer.xy.XYLineAndShapeR enderer,

<%@page

import="org.jfree.data.general.DatasetUtili ties,org.jfree.chart.imagemap.StandardToolT ipTagFragmentGenerator

"%>

content="text/html; charset=GBK">

程序员学历情况调查表

<%

// 创建折线图需要的数据源

double[][] data = { { 380, 1620, 6100, 3520, 180 } };

String[] rowKeys = { "人数" };

String[] columnKeys = { "高中以下", "高中", "本科", "硕士", "博士" };

//调用工厂方法创建数据源

CategoryDataset dataset =

DatasetUtilities.createCategoryDataset( rowKeys, columnKeys, data);

//调用工厂方法创建LineChart

JFreeChart chart =

ChartFactory.createLineChart("程序员学历情况

调查表-折线图", "学历", "人数",

dataset, PlotOrientation.VERTICAL, true, //生成图例

true, //生成热点工具,如果要在图片中实现鼠标放上时显示数据,须设置为true

true); //生成URL链接

//取出图片标题,并对其字体进行设置

chart.getTitle().setFont(new Font("隶书", Font.BOLD, 20));

CategoryPlot plot =

chart.getCategoryPlot();

Font font = new Font("宋体", Font.BOLD, 15);

chart.getLegend().setItemFont(font);

//对横竖坐标标签进行字体设置

plot.getDomainAxis().setTickLabelFont(fon t);

plot.getDomainAxis().setLabelFont(font);

plot.getRangeAxis().setLabelFont(font);

LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) plot

.getRenderer();

lineandshaperenderer.setBaseShapesVisible (true); // series 点(即数据点)可见

//lineandshaperenderer.setBaseLinesVisibl e(true);

lineandshaperenderer.setBaseItemLabelGene rator(new //显示折点数据

StandardCategoryItemLabelGenerator());

lineandshaperenderer.setBaseItemLabelsVis

相关主题
文本预览
相关文档 最新文档