1、JFreeChart组件,用于图形的开发。
1)到http://www.jfree.org/jfreechart/下载JFreeChart的zip文件,解压后得到的目录的lib子目录中的所有jar包拷贝到Web应用的WEB-INF/lib目录下,完成安装。
2)用JFreeChart创建Web图形需要经过3个步骤:
Œ创建一个包含要在Web图形中显示的数据的数据集对象。
创建一个用于作图的JFreeChart对象。
Ž向目标作图。Web图表的作图目标为response.getOutputStream(),即response对象的输出流。
3)创建一个简单的饼形图:
<%
@pagecontentType="text/html;charset=GB2312"
%>
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
<%
@pageimport="org.jfree.chart.JFreeChart,org.jfree.chart.ChartUtilities,
org.jfree.chart.ChartFactory,org.jfree.data.general.DefaultPieDataset"%>
<%
//第一步:创建一个包含要在Web图形中显示的数据的数据集对象
/*显示数据系列,也可以从数据库读取数据,构建数据集对象*/
Stringinterest[]=newString[]{"文学","相声","编程","体育","音乐","历史"};
/*数据系列对应的值*/
intinterestValue[]={88,73,98,67,56,66};
/*饼形图的数据对象集对象可以是实现了JFfreeChart组件中的PieDataset接口的类的实例,也可以使用JFreeChart组件中已有的已实现了此接口的DefaultPieDataset类,更方便和快捷。*/
DefaultPieDatasetpieDataset=newDefaultPieDataset();
for(inti=0;i<interest.length;i++)
pieDataset.setValue(interest[i],interestValue[i]);
//第二步:创建一个用于作图的JFreeChart对象
/*ChartFactory是一个工厂类,可用于创建JFreeChart对象。这里使用的方法是createPieChart()方法,参数作了简单的设置。还有别的方法。*/
StringtitleString="我的爱好统计图";//图的标题
JFreeChartchart=ChartFactory.createPieChart(titleString,pieDataset,true,true,true);
//第三步:向目标作图。
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,800,500);
%>
4)创建一个简单的条形图:
<%
@pagecontentType="text/html;charset=GB2312"
%>
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
<%
@pageimport="org.jfree.chart.JFreeChart,org.jfree.chart.ChartUtilities,
org.jfree.chart.ChartFactory,
org.jfree.chart.plot.PlotOrientation,
org.jfree.data.category.DefaultCategoryDataset"
%>
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
<%
/**
*用JFreeChart创建条形图需要用实现了CategoryDataset接口
*或IntervalXYDataset接口的类的实例来作为数据集对象,
*常用JFreeChart中自带的已实现了CategoryDataset接口的DefaultCategoryDataset类。
*/
//第一步:创建一个包含要在Web图形中显示的数据的数据集对象
StringdataName[]=newString[]{"文学","相声","编程","体育","音乐","历史"};//显示数据系列
intdataValueCount[]={88,73,98,67,56,66};//数据系列对应的值
//------创建数据集,并设置值------
DefaultCategoryDatasetcategoryDataset=newDefaultCategoryDataset();
for(inti=0;i<dataName.length;i++)
categoryDataset.addValue(dataValueCount[i],dataName[i],dataName[i]);
//第二步:创建一个用于作图的JFreeChart对象
StringtitleString="我的爱好统计图";//图的标题
/**
*createBarChart方法中的参数依次为图形标题、分类轴标签(默认为横向)、
*数值轴标签(默认为纵向)、数据集、图形显示方向、是否显示图例、是否有工具条、是否有URL
*/
JFreeChartchart=ChartFactory.createBarChart(titleString,"爱好","爱它几分",
categoryDataset,PlotOrientation.VERTICAL,true,true,false);
//第三步:向目标作图。
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,500,300);
%>
注:条形图的显示也可以作一些定制性的修改,常用的修改方法:
Œ修改图形的背景颜色:chart.setBackgroundPaint(new Color(#BBBBDD));
修改图形的柱状条颜色。需要使用setCategoryPlot()方法,它非JFreeChart类所有,需要先用JFreeChart类的实例的getCategoryPlot()方法得到一个CategoryPlot对象,再用CategoryPlot对象的getRenderer()方法得到一个BarRenderer对象,用此对象的setSeriesPaint()方法来设置柱状条的颜色,如
CategoryPlotplot
=
chart.getCategoryPlot();
BarRendererrenderer
=
(BarRenderer)plot.getRenderer();
renderer.setSeriesPaint(
0
,Color.red);
renderer.setSeriesPaint(
1
,Color.yellow);
renderer.setSeriesPaint(
2
,Color.green);
Ž柱状条的间距。JFreeChart允许修改类型轴的一些设置,如:
§第一条柱状条与数值轴之间的空白间隔距。
§柱状条之间的空白间距。
§最后一条柱状条后空白距离。此三项的设置方法示例:
CategoryPlotplot
=
chart.getCategoryPlot();
CategoryAxisaxis
=
plot.getDomainAxis();
axis.setLowerMargin(
0.01
);
//
百分这二
axis.setCategoryMargin(
0.10
);
//
百分之十
axis.setUpperMargin(
0.02
);
//
百分之二
5)创建线形图:
<%
@pagecontentType
=
"
text/html;charset=GB2312
"
%>
<%
@page
import
=
"
org.jfree.chart.JFreeChart,org.jfree.chart.ChartUtilities,
org.jfree.chart.ChartFactory,
org.jfree.chart.plot.PlotOrientation,
org.jfree.data.category.DefaultCategoryDataset
"
%>
<%
![](http://writeblog.csdn.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
/***/
/**
*JFreeChart创建线形图使用的数据集可以是CategoryDataset接口
*或XYDataset的实现类的实例。
*/
//
------数据线------
StringdataLine1
=
"
物理
"
;
StringdataLine2
=
"
化学
"
;
StringdataLine3
=
"
数学
"
;
//
------数据列------
StringdataCol1
=
"
1
"
;
StringdataCol2
=
"
2
"
;
StringdataCol3
=
"
3
"
;
StringdataCol4
=
"
4
"
;
StringdataCol5
=
"
5
"
;
StringdataCol6
=
"
6
"
;
//
------创建数据集,并设置值------
DefaultCategoryDatasetcategoryDataset
=
new
DefaultCategoryDataset();
categoryDataset.addValue(
60
,dataLine1,dataCol1);
categoryDataset.addValue(
70
,dataLine1,dataCol2);
categoryDataset.addValue(
83
,dataLine1,dataCol3);
categoryDataset.addValue(
90
,dataLine1,dataCol4);
categoryDataset.addValue(
92
,dataLine1,dataCol5);
categoryDataset.addValue(
85
,dataLine1,dataCol6);
categoryDataset.addValue(
63
,dataLine2,dataCol1);
categoryDataset.addValue(
45
,dataLine2,dataCol2);
categoryDataset.addValue(
67
,dataLine2,dataCol3);
categoryDataset.addValue(
76
,dataLine2,dataCol4);
categoryDataset.addValue(
90
,dataLine2,dataCol5);
categoryDataset.addValue(
87
,dataLine2,dataCol6);
categoryDataset.addValue(
50
,dataLine3,dataCol1);
categoryDataset.addValue(
76
,dataLine3,dataCol2);
categoryDataset.addValue(
84
,dataLine3,dataCol3);
categoryDataset.addValue(
96
,dataLine3,dataCol4);
categoryDataset.addValue(
88
,dataLine3,dataCol5);
categoryDataset.addValue(
80
,dataLine3,dataCol6);
//
------创建线图------
StringtitleString
=
"
XXXXXX学生成绩线图
"
;
//
图的标题
JFreeChartchart
=
ChartFactory.createLineChart(titleString,
"
第几次考试
"
,
"
成绩
"
,
categoryDataset,PlotOrientation.VERTICAL,
true
,
true
,
false
);
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,
500
,
300
);
%>
6)JFreeChart中常用的几个包:
Œorg.jfree.chart:这个包包含了JFreeChart最为重要的也是为常用的几个类和接口。
org.jfree.chart.data:数据集相关的接口和类。
Žorg.jfree.chart.plot:绘图相关的类和接口。
org.jfree.chart.data.general:常用的数据集相关的接口和类。
7)开发中最为常用的几个类或接口:
ŒJFreeChart类。这个类在org.jfree.chart包中,用于协调整个画图的处理过程。生成这个类通常使用ChartFactory类。它的主要方法有:public void draw(Graphics2D g2,Rectang2D area)此方法用于在图形设备的特定区域画图。参数g2代表一个图形,area为包容这个图形的矩形容器。java中提供的图形设备有:屏幕、打印机、图形缓冲区。JFreeChart绘图是由不同的java.awt.Graphics2D包中的抽象类实现的,只有利用它们,JFreeChart才能向不同的图形设备输出图形。
ChartFactory类。这是一个工厂类,即org.jfree.chart.ChartFactory,它提供了一些比较方便的创建图形对象的方法。此类常用的方法有:public static JFreeChart createPieChart(String title,PieDataset dataset,boolean legend,boolean tooltips,boolean urls),此方法用于创建一个标准的饼图。title是标题;dataset是创建饼形图所使用的特定数据集(可为空);legend表示是否为一个图例;tooltips用于配置图形是否生成提示信息;urls配置图形是否生成URL。public static JFreeChart createBarChart(String title,String categoryAxisLabel,String tvalueAxisLabbel,CategoryDataset dataset,PlotOrientation orientation,boolean legend,boolean tooltips,boolean urls)此方法用于生成条形图。public static JFreeChart createLineChart(String title,String categoryAxisLabel,String valueAxisLabel,CategoryDataset dataset,PlotOrientation orientation,boolean legend,boolean tooltips,boolean urls),其中categoryAxisLabel指出横向轴(分类轴)的提示字符串,valueAxisLabel指出横向轴(值轴)的提示字符串,orientation指出条形图为横向还是竖向。
ŽChartUtilities类。它在org.jfree.chart包中,能过可从chart对象生成PNG格式或JPEG格式的图片,也可生成带有点击范围的HTML图片,这些方法都是表态是静态的。
writeChartAsPNG(java.io.OutputStreamout, JFreeChartchart, intwidth, intheight)
throws java.io.IOException
writeChartAsJPEG(java.io.OutputStreamout, JFreeChartchart, intwidth, intheight)
throws java.io.IOException
writeChartAsJPEG(java.io.OutputStreamout, JFreeChartchart, intwidth, intheight, ChartRenderingInfoinfo)
throws java.io.IOException
PlotOrientaion类,它在包中,用于表示图形的显示方向,主要有两属性:public static final PlotOrientation HORIZONTAL(横向)与public static final PlotOrientation VERTICAL(纵向)。
DefaultCategoryDataset接口,它在org.jfree.data.category包中,这是一个默认情况下的使用的分类数据集接口。构造函数:public DefaultCategoryDataset()生成个空的数据集。
addValue(doublevalue, java.lang.ComparablerowKey, java.lang.ComparablecolumnKey)
setValue(doublevalue, java.lang.ComparablerowKey, java.lang.ComparablecolumnKey)
两者功能相同,向数据中增加值,如果这个数据已存在则覆盖它。