JFreeChart 详细介绍使用(三)

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" %>
<% @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" %>
<% @pageimport="org.jfree.chart.JFreeChart,org.jfree.chart.ChartUtilities,
org.jfree.chart.ChartFactory,
org.jfree.chart.plot.PlotOrientation,
org.jfree.data.category.DefaultCategoryDataset
"
%>
<%
/**
*用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
" %>
<%
/***/ /**
*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)
两者功能相同,向数据中增加值,如果这个数据已存在则覆盖它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值