JFreeChart使用总结.doc_第1页
JFreeChart使用总结.doc_第2页
JFreeChart使用总结.doc_第3页
JFreeChart使用总结.doc_第4页
JFreeChart使用总结.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JFREECHART使用总结目录一、JFreeChart简介3二、JFreeChart的获取3三、JFreeChart环境配置3四、JFreeChart功能介绍4五、JFreeChart核心类库介绍4六、JFreeChart开发5第一步:建立DataSet数据源5第二步:创造JFreeChart5第三步:设置图形显示的属性6第四步:写入图片或输出界面6七、JFREECHART图片在web中的应用87.1在eclipse中创建tomcat工程87.2 创建web.xml87.3 配置web.xml97.4 创建含有JFreeChart图片的页面97.5 配置server.xml127.6测试页面12八、JFreeChart使用的优缺点131.优点:132.缺点:13附录1:JFreeChart中文API(Application Programming Interface)14附录2:GNU通用公共许可证(中文版)22导言220.定义231源代码232基本的许可243保护用户的合法权利不受反破解法侵犯244发布完整副本245发布修改过的源码版本246发布非源码形式的副本257附加条款268终止授权279.获取副本不需要接受本授权2710.下游接收者的自动授权2711专利权2812不要放弃别人的自由2913和GNU Affero通用公共授权一起使用2914本授权的修订版2915免责申明2916责任范围3017第15和16节的解释30一、JFreeChart简介JFreeChart是开放源代码站点SourceF上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。当在项目中客户需要图标分析时,JFreeChart便是最好的选择,JFreeChart是开源项目,可以方便的从其官方网站上获得其源代码,可以方便的与Swing相结合使用,还可以导入到Web页面中,更是可以方便的利用其工厂方法将图表写入jpeg或者png格式的图片中,本文档将简要介绍小JFreeChart的使用。二、JFreeChart的获取JFreeChart 是JFreeChart公司在开源网站SourceF上的一个项目,该公司的主要产品有如下: 1.JFreeReport :报表解决工具 2.JFreeChart:Java 图形解决方案(Application/Applet/Servlet/Jsp) 3.JCommon :JFreeReport和JFreeChart的公共类库 4.JFreeDesigner :JFreeReport的报表设计工具 我们可以从jfree官方网站上获取最新版本和相关资料(但是jfree的document需要40美金才能获取), 获取地址:/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、libjcommon-1.0.15.jar、libgnujaxp.jar。JCommon-1.0.15.jar是一组有用的classes集合. 这个类库包含了以下功能: * 文本工具类(text utilities),* 用来显示关于应用程序信息的用户界面类,* 布局定制管理器,* 一个日期选择面板,* 序列化工具类,* XML解析器支持类。 3、如果是Application开发,把上述三个文件拷贝到%JAVA_HOME%LIB中,同时在环境变量CLASSPATH中加入。在开发中,还有在工程中导入jfreechart-1.0.12.jar,jcommon-1.0.15.jar,否则会在文件第一行提示有错误。 如果是WEB开发,以TOMCAT中的一个WEB项目TEST为例子说明: 把上述三个文件拷贝到TESTWEB-INFLIB中,然后修改TESTWEB-INFweb.xml文件,在其中加入如下代码: DisplayChart org.jfree.chart.servlet.DisplayChart DisplayChart /servlet/DisplayChart 至此jfreechart的配置就完成了,下面就可以进行jfreechart的开发了。这里值得提出的是jfreechart的类结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。四、JFreeChart功能介绍JFreeChart是一个免费的Java图表库,让开发人员开发出专业的图表显示在他们的应用程序。 JFreeCharts extensive feature set includJFreeChart的广泛的功能包括: a consistent and well-documented API, supporting a wide range of chart types;翔实的API ,支持各种各样的图表类型; a flexible design that is easy to extend, and targets both server-side and client-side applications;一种灵活的设计,易于扩展,和指标均服务器端和客户端的应用; 支持多种类型的输出,包括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图形主要有以下三个步骤(以柱图为例):第一步:建立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 ,CategoryDatasetdataset=DatasetUtilities.createCategoryDataset(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类,设置柱到图上下边的距离。实现方法是:ValueAxisrangeAxis=plot.getRangeAxis();设置最高的一个柱与图片顶端的距离:rangeAxis.setUpperMargin(0.15)设置最低的一个柱与图片底端的距离:rangeAxis.setLowerMargin(0.15)b)org.jfree.chart.renderer.BarRenderer3D类,设置图形上显示的数值。实现方法如下:BarRenderer3Drenderer=newBarRenderer3D();renderer.setBaseOutlinePaint(Color.BLACK);设置Wall的颜色:renderer.setWallPaint(Color.gray);设置每个柱的颜色:renderer.setSeriesPaint(0,newColor(0,0,255);renderer.setSeriesPaint(1,newColor(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(newFont(黑体,Font.PLAIN,12);renderer.setItemLabelsVisible(true);为图形加入超连接renderer.setItemURLGenerator(newStandardCategoryURLGenerator();renderer.setToolTipGenerator(newStandardCategoryToolTipGenerator();第四步:写入图片或输出界面a. 写入图片利用ChartUtilities.writeChartAsJPEG(fos_jpg, /图片输出地址1.0f, /设置图片质量 chart, /指定chart500, /设置图片宽度400); /设置图片高度在打开图片时,有可能出现异常,注意扑捉异常。代码如下:FileOutputStream fos_jpg = null;try fos_jpg = new FileOutputStream(D:fruit.jpg);ChartUtilities.writeChartAsJPEG(fos_jpg,1.0f, chart, 500, 400);finallytryfos_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工程中的应用。7.1在eclipse中创建tomcat工程在eclipse中创建tomcat工程,须先在eclipse中安装tomcat插件。Tomcat插件是开源项目,可以在其官方网站免费获得。Tomcat插件获得的网站是/eclipse/tomcatPlugin.html,下载tomcat插件tomcatPluginV321.rar,将其解压到Eclipse的plugins目录下。之后再启动Eclipse ,在IDE中选择“Window”菜单的“Customize Perspective”,展开弹出窗口的Other结点,可以看到下面有Tomcat选项,打上钩按“OK”关闭窗口。做完这一步,在IDE的工具栏就会能看到tomcat小猫的图标。然后在到“Windows”菜单的“perferences”去做一些关于tomcat的设置,正确选择所安装的tomcat版本(我使用的是Tomcat5.5版本),指定tomcat主目录和tomcat的server.xml配置文件,然后展开Tomcat,选下边的JVM Setting,选择JRE为“Detected VM”,确认无误后点击”OK”完成设置。好了,完成以上的设置,此时就可以在eclipse中创建一个tomcat工程,选择“IDE”的“file”菜单下面的“Project”菜单,选择”Tomcat Project”,然后输入工程名字(TestJFreeChartWeb),点击“Finnish”完成工程创建。7.2 创建web.xml在Tomcat工程目录下WEB-INF目录下,创建web.xml。具体步骤为:1. 在右击Tomcat工程目录下WEB-INF目录,选择“new”-“File”。2. 输入file名称为web.xml,点击“finish”完成创建。3. 在打开的file中输入以下内容: 至此完成web.xml的创建。7.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.15.jar即可。5.再将jfreechart-1.0.12.jar,jcommon-1.0.15.jar拷到工程目录下WEB-INF/lib文件夹中即可。7.3 配置web.xml 在web.xml文件和中间加入以下的配置。 DisplayChart org.jfree.chart.servlet.DisplayChart DisplayChart /servlet/DisplayChart 7.4 创建含有JFreeChart图片的页面1.右击Tomcat工程目录下WEB-INF目录,选择“new”-“File”。2.输入file名称为xyline.jsp,点击“finish”完成创建。3.打开File文件,在文件中输入以下代码:java.awt.Font,org.jfree.data.category.CategoryDataset,org.jfree.chart.ChartUtilities,org.jfree.chart.renderer.category.LineAndShapeRenderer,org.jfree.chart.labels.StandardCategoryItemLabelGenerator,org.jfree.chart.plot.CategoryPlot,org.jfree.data.category.DefaultCategoryDataset,org.jfree.chart.ChartFactory,org.jfree.chart.plot.PlotOrientation,org.jfree.chart.JFreeChart,org.jfree.chart.servlet.ServletUtilities,org.jfree.chart.entity.StandardEntityCollection,org.jfree.chart.ChartRenderingInfo,org.jfree.chart.imagemap.StandardURLTagFragmentGenerator,org.jfree.chart.labels.StandardCategoryItemLabelGenerator,org.jfree.chart.renderer.xy.XYLineAndShapeRenderer,程序员学历情况调查表img src= width=700 height=500border=0 usemap=#map07.5 配置server.xml在tomcat工程中配置server.xml信息,可以有两种方式:1. 右击工程名称,选择“Tomcat Project”,在其下拉框中选择“Updata context definition”,点击提示“Oparetion Successful”,则说明在server.xml中已配置好元素。2. 在/conf/server.xml中手动配置元素。具体方法是:用记事本方式打开server.xml,在元素里添加元素,添加如下代码: 元素的属性描述参见下表:描述属性path指定访问该Web应用的URL入口docBase指定Web应用的文件路径。可以给定绝对路径,也可以给定相对于Host的appBase属性的相对路径。如果Web应用采用开放目录结构,那就指定Web应用的根目录;如果Web应用是个WAR文件,那就指定WAR文件的路径reloadable如果这个属性设置为true,Tomcat服务器在运行状态下会监视在WEB-INF/class和WEB-INF/lib目录下CLASS文件的改动。如果监测到有class被更新,服务器会自动加载Web应用。workDir指定work的文件路径。7.6测试页面启动tomcat,打开IE,在地址栏中输入http:/localhost:8080/Test/xyline.jsp回车即可显示一下网页,把鼠标放在这点上,将会出现如图那样提示节点数据。八、JFreeChart使用的优缺点1.优点:图表能使数据形象直观的表现,给数据统计也提供了方便,JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面:饼图(二维和三维) , 柱状图 (水平,垂直),线图,点图,时间变化图,甘特图, 股票行情图,混和图, 温度计图, 刻度图等常用商用图表),图形可以导出成PNG和JPEG格式,同时还可以与PDF和EXCEL关联。JFreeChart还是开源项目,可以在其官方网站上得到其源代码。2.缺点:JFreeChart项目本身的类结构设计的并不是很好,首先在创建图表的时候用到了大量的工厂方法,这样做虽然可以简化创建图表代码,但是对项目本身或者开发人员来讲自行扩展一种新的图标仍然是一件很麻烦的事情;其次除图标本身外其余的类过于复杂,使用者必须去了解每个类型的图表对象应该对应哪些Axis、Plot、Renderer类,并且必须非常熟悉这些类的构造方法中的每个参数的具体含义。不过虽然还存在很多问题,但是JFreeChart本身仍不失为一个优秀的图表引擎。JFreeChart还有个缺点是汉字显示的问题,我在网上找来些这方面的资料,说是在其解压文件下找其字体的配置文件,不过我在最新的版本中没有找到。我的解决方案是,例如在柱状图中,我们可以获取纵轴或横轴的显示标签,在标签上设置显示字体,可以达到显示汉字的效果。代码如下:(CategoryPlot)chart.getPlot().getDomainAxis().setLabelFont(new Font(宋体,Font.BOLD,10); /获得x轴标签,并设置字体(CategoryPlot)chart.getPlot().getRangeAxis().setLabelFont(new Font(宋体,Font.BOLD,10); /获得y轴标签,并设置字体附录1:JFreeChart中文API(Application Programming Interface)JFreeChart类:void setAntiAlias(boolean flag) 字体模糊边界void setBackgroundImage(Image image) 背景图片void setBackgroundImageAlignment(int alignment) 背景图片对齐方式(参数常量在org.jfree.ui.Align类中定义)void setBackgroundImageAlpha(float alpha) 背景图片透明度(0.01.0)void setBackgroundPaint(Paint paint) 背景色void setBorderPaint(Paint paint) 边界线条颜色void setBorderStroke(Stroke stroke) 边界线条笔触void setBorderVisible(boolean visible) 边界线条是否可见- TextTitle类:void setFont(Font font) 标题字体void setPaint(Paint paint) 标题字体颜色void setText(String text) 标题内容-StandardLegend(Legend)类:void setBackgroundPaint(Paint paint) 图示背景色void setTitle(String title) 图示标题内容void setTitleFont(Font font) 图示标题字体void setBoundingBoxArcWidth(int arcWidth) 图示边界圆角宽void setBoundingBoxArcHeight(int arcHeight) 图示边界圆角高void setOutlinePaint(Paint paint) 图示边界线条颜色void setOutlineStroke(Stroke stroke) 图示边界线条笔触void setDisplaySeriesLines(boolean flag) 图示项是否显示横线(折线图有效)void setDisplaySeriesShapes(boolean flag) 图示项是否显示形状(折线图有效)void setItemFont(Font font) 图示项字体void setItemPaint(Paint paint) 图示项字体颜色void setAnchor(int anchor) 图示在图表中的显示位置(参数常量在Legend类中定义)-Axis类:void setVisible(boolean flag) 坐标轴是否可见void setAxisLinePaint(Paint paint) 坐标轴线条颜色(3D轴无效)void setAxisLineStroke(Stroke stroke) 坐标轴线条笔触(3D轴无效)void setAxisLineVisible(boolean visible) 坐标轴线条是否可见(3D轴无效)void setFixedDimension(double dimension) (用于复合表中对多坐标轴的设置)void setLabel(String label) 坐标轴标题void setLabelFont(Font font) 坐标轴标题字体void setLabelPaint(Paint paint) 坐标轴标题颜色void setLabelAngle(double angle) 坐标轴标题旋转角度(纵坐标可以旋转)void setTickLabelFont(Font font) 坐标轴标尺值字体void setTickLabelPaint(Paint paint) 坐标轴标尺值颜色void setTickLabelsVisible(boolean flag) 坐标轴标尺值是否显示void setTickMarkPaint(Paint paint) 坐标轴标尺颜色void setTickMarkStroke(Stroke stroke) 坐标轴标尺笔触void setTickMarksVisible(boolean flag) 坐标轴标尺是否显示ValueAxis(Axis)类:void setAutoRange(boolean auto) 自动设置数据轴数据范围void setAutoRangeMinimumSize(double size) 自动设置数据轴数据范围时数据范围的最小跨度void setAutoTickUnitSelection(boolean flag) 数据轴的数据标签是否自动确定(默认为true)void setFixedAutoRange(double length) 数据轴固定数据范围(设置100的话就是显示MAXVALUE到MAXVALUE-100那段数据范围)void setInverted(boolean flag) 数据轴是否反向(默认为false)void setLowerMargin(double margin) 数据轴下(左)边距void setUpperMargin(double margin) 数据轴上(右)边距void setLowerBound(double min) 数据轴上的显示最小值void setUpperBound(double max) 数据轴上的显示最大值void setPositiveArrowVisible(boolean visible) 是否显示正向箭头(3D轴无效)void setNegativeArrowVisible(boolean visible) 是否显示反向箭头(3D轴无效)void setVerticalTickLabels(boolean flag) 数据轴数据标签是否旋转到垂直void setStandardTickUnits(TickUnitSource source) 数据轴的数据标签(可以只显示整数标签,需要将AutoTickUnitSelection设false)NumberAxis(ValueAxis)类:void setAutoRangeIncludesZero(boolean flag) 是否强制在自动选择的数据范围中包含0void setAutoRangeStickyZero(boolean flag) 是否强制在整个数据轴中包含0,即使0不在数据范围中void setNumberFormatOverride(NumberFormat formatter) 数据轴数据标签的显示格式void setTickUnit(NumberTickUnit unit) 数据轴的数据标签(需要将AutoTickUnitSelection设false)DateAxis(ValueAxis)类:void setMaximumDate(Date maximumDate) 日期轴上的最小日期void setMinimumDate(Date minimumDate) 日期轴上的最大日期void setRange(Date lower,Date upper) 日期轴范围void setDateFormatOverride(DateFormat formatter) 日期轴日期标签的显示格式void setTickUnit(DateTickUnit unit) 日期轴的日期标签(需要将AutoTickUnitSelection设false)void setTickMarkPosition(DateTickMarkPosition position) 日期标签位置(参数常量在org.jfree.chart.axis.DateTickMarkPosition类中定义)CategoryAxis(Axis)类:void setCategoryMargin(double margin) 分类轴边距void setLowerMargin(double margin) 分类轴下(左)边距void setUpperMargin(double margin) 分类轴上(右)边距void setVerticalCategoryLabels(boolean flag) 分类轴标题是否旋转到垂直void setMaxCategoryLabelWidthRatio(float ratio) 分类轴分类标签的最大宽度-Plot类:void setBackgroundImage(Image image) 数据区的背景图片void setBackgroundImageAlignment(int alignment) 数据区的背景图片对齐方式(参数常量在org.jfree.ui.Align类中定义)void setBackgroundPaint(Paint paint) 数据区的背景图片背景色void setBackgroundAlpha(float alpha) 数据区的背景透明度(0.01.0)void setForegroundAlpha(float alpha) 数据区的前景透明度(0.01.0)void setDataAreaRatio(double ratio) 数据区占整个图表区的百分比void setOutLinePaint(Paint paint) 数据区的边界线条颜色void setOutLineStroke(Stroke stroke) 数据区的边界线条笔触void setNoDataMessage(String message) 没有数据时显示的消息void se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论