`
刺花绣
  • 浏览: 25639 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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"%>
<%@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接口
*或XYDataset的实现类的实例。
*/

//------数据线------
StringdataLine1="物理";
StringdataLine2
="化学";
StringdataLine3
="数学";
//------数据列------
StringdataCol1="1";
StringdataCol2
="2";
StringdataCol3
="3";
StringdataCol4
="4";
StringdataCol5
="5";
StringdataCol6
="6";
//------创建数据集,并设置值------
DefaultCategoryDatasetcategoryDataset=newDefaultCategoryDataset();
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)
两者功能相同,向数据中增加值,如果这个数据已存在则覆盖它。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics