`
sktoo
  • 浏览: 76873 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

jfreechart - (1)介绍

阅读更多

JfreeChart简介      

JFreeChart 是JFreeChart公司在开源网站SourceForge.net上的一个项目,该公司的主要产品有如下:
      1.JFreeReport :报表解决工具
      2.JFreeChart:Java 图形解决方案(Application/Applet/Servlet/Jsp)
      3.JCommon :JFreeReport和JFreeChart的公共类库 
      4.JFreeDesigner :JFreeReport的报表设计工具

JFreeChart 的功能非常强大,可以实现饼图 ( 二维和三维 ) ,  柱状图  ( 水平 , 垂直 ), 线图 , 点图 , 时序图 , 甘特图 ,  股票行情图 , 混和图 ,  温度计图 ,  刻度图等常用商用图表, 支持常见图形的 3D 显示。 

图形可以导出成 PNG 和 JPEG 格式,同时还可以与 PDF 和 EXCEL 关联,支持对图形的放大、缩小。

 

JFreeChart获取 
我们可以从jfree官方网站上获取最新版本和相关资料(但是jfreechart的开发文档和demo源码是收费的)
官方网址:
http://www.jfree.org/jfreechart
jfreechart-1.0.11.zip下载:http://nchc.dl.sourceforge.net/sourceforge/jfreechart/jfreechart-1.0.11.zip

jfreechart-1.0.10-javadocs下载:

http://nchc.dl.sourceforge.net/sourceforge/jfreechart/jfreechart-1.0.10-javadocs.zip

JFreeChart配置安装
解压jfreechart-1.0.11.zip

/lib : jar文件

/source : 源代码

/tests : junit测试程序


设置classpath。加入lib文件夹里的两个jar包(jfreechart-1.0.1.jar 、jcommon-1.0.0.jar)
注意:
jfreechart的类结构设计前后兼容性不是很好,不同版本的jfreechart中类库结构可能不一样,有时候可能需要查源码。
如果是中文显示的时候可能依据观感需要改变源码的字体。

 

 

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

 

JFreeChart 图表对象,任何类型的图表的最终表现形式都是在该对象进行一些属性的定制。
ChartFactory 工厂类提供了不同的方法用于创建不同类型的图表对象。
XXXDataset 数据集对象,用于提供显示图表所用的数据。根据不同类型的图表对应着很多类型的数据集对象类。
XXXPlot 图表区域对象,基本上这个对象决定着什么样式的图表,创建该对象的时候需要Axis、Renderer以及数据集对象的支持。
XXXAxis 用于处理图表的两个轴:纵轴和横轴。
XXXRenderer 负责如何显示一个图表对象。
XXXURLGenerator 用于生成Web图表中每个项目的鼠标点击链接。
XXXXXToolTipGenerator 用于生成图象的帮助提示,不同类型图表对应不同类型的工具提示类。

 

JFreeChart对象
1.定义:JFreeChart 可以生成很多图形对象,它的工厂类提供了 33 个工厂方法用于生成不同的图形对象。

2.组成:图形对象( JFreeChart ),由 Title( 主标题 ) , SubTitle (子标题 ) , Plot (图形的绘制结构)等几个主要对象组成。各个组成部分如下图所示:

 

 

      这是一个 JFreeChart 对象,上面的“ 台湾偶像剧收视率(2008-9-21)”是 Title 对象,中间区域是 Plot 对象(包括绘图区域和坐标轴区域),下面的区域是 LegendTitle 对象,是一种 SubTitle 对象。 每个 JFreeChart 对象只能有 1 个 Title 对象, 1 个 Plot 对象,可以有多个 SubTitle 对象。

3.设置:背景(背景颜色、背景图片、透明度等)、边框(是否可见、笔画、 Paint 等)、渲染方式、标题对象、子标题对象的增删查操作。

 

主标题对象
1.定义:主标题对象是 TextTitle 类型。

2.设置:背景、字体(字体类型、颜色、内容、对齐方式等操作)、 tooltip 、 URL。

 

Plot 对象
1.定义:Plot 对象是图形的绘制结构对象。

2.组成:JFreeChart 中有 18 种 Plot 抽象类的具体实现类,每一种图形对象中的 Plot 对象都在实例化的时候创建。

Plot 的具体实现类主要由以下重要对象组成:

Renderer 对象(图形的绘制单元——绘图域)

Datset (图形的数据源),

DomainAxis (区域轴,相当于 x 轴),

RangeAxis (范围轴,相当于 y 轴)。

不同的 Plot 对象组成方式不尽相同。

有的不含有 Renderer 对象,比如 CompassPlot 、 ContourPlot 、MultiplePiePlot 、 PiePlot 等,

有的不含有 DomainAxis 、 RangeAxis 对象,

另外除了 FastScatterPlot 类都含有 Datset 对象, FastScatterPlot 使用 float 的二维数组充当数据源。

尤其说明一点,饼状图相关的 Plot 对象( MultiplePiePlot 、 PiePlot 、 PiePlot3D 、 RingPlot )中都不含有 Renderer 对象、 DomainAxis 对象、 RangeAxis 对象。

一般来说, Datset 对象存储数据模型, Renderer 对象存储显示模型, Plot 对象根据 Datset 对象、 Renderer 对象完成画图操作。

仍以上面的图形讲解 Plot 对象的组成。

 

   上图的中间区域是是一个 XYPlot 对象。其中的折线部分即是图形的绘制单元 Renderer 对象。 X 轴是 DomainAxis , y 轴是 RangeAxis ,其中 Datset 对象属于数据模型范畴,是 UI 不可见对象。该图中的 plot 背景色、网格线的各种设置可以通过 XYPlot 对象本身完成。

3设置:

所有的 Plot 共有的:背景(背景颜色、背景图片、透明度等)、前景透明度、无数据存在情况的设置(显示的字符内容、显示的字体、显示的 Paint )、放大缩小比例的,

大部分 Plot 对象还有设置 Dataset 、设置 Renderer 对象操作。      

 

Renderer对象
1.定义:Renderer 对象是图形的绘制单元。 JFreeChart 提供了两个接口 CategoryItemRenderer 和 XYItemRenderer 、 1 个抽象类 AbstractRenderer 供具体的 Renderer 类实现,给出了将近 50 种具体实现类。

 

2组成:不同的 Renderer 的实现类实现了不同的显示方式,在含有 Renderer 对象的 JFreeChart 对象中, R enderer 对象决定了JFreeChart对象的显示方式。

例如:柱状图的Plot对象中默认的Renderer对象是 CategoryItemRenderer 对象,通过线图的 Plot 对象中的Renderer对象 为 LineAndShapeRenderer 。

使用中一般不需要显式的实例化一个 R enderer 对象,一般通过 JFreeChart 对象的 Plot 对象调用现有的 R enderer 对象进行重新设置等操作。

3.设置:一般来说 Renderer 对象可进行的操作有:

对 item label (下图中的柱状图上的红色数字即为 item label 的示例)的默认设置( item label 的产生方式、是否可见、字体、 Paint 、正反向 item label 的位置设置等)、绘制图形的边框默认设置( Paint 、笔画、是否可见等)、绘制图形的默认设置(形状、笔画、是否可见、对应的图例中是否可见等,折线图还有线条是否可见、折点图形是否可见、折点图形是否填充、折点图形的形状、对应的图例中线条是否可见、图形是否可见、整体是否可见等)、以及对指定 item label 的设置、指定绘制图形的设置。可以说和具体绘制的图形相关的属性都可以通过 Renderer 对象设置。

  

 

 

Axis对象
1.组成:JFreeChart 提供了两种类型的坐标轴: CategoryAxis (等级轴)和 ValueAxis (值轴),

ValueAxis 又有 3 个子类: DateAxis (时间轴)、 NumberAxis (数字轴)、 PeriodAxis (时期轴)。

这些坐标轴还有更详细的子类,不再一一列举。

2.设置:标题的设置(内容、字体、Paint、显示角度等)、坐标线的设置(笔画、Paint、是否可见等)、刻度线的设置(是否可见、笔画、Paint、位于绘图区域的长度、位于绘图区域外的长度等)、刻度标示的设置(笔画、Paint、字体、与轴的距离等)、坐标轴范围设置等。

CategoryAxis 对象还可以进行的操作有: 刻度标示间距 设置( 最小间距、最大间距、指定间距)等。

ValueAxis 对象可进行的操作有:轴端设置(显示的图形形状)、范围设置(是否自动产生范围、自动产生的最小范围、最大范围、指定确定范围、指定范围大小等)、间隔设置(是否自动产生间隔、指定间隔)等。

DateAxis 对象还有对时间刻度显示格式的设置操作。

 

 

子标题对象
    子标题对象是 Title 类型的对象,一个JFreeChart可以有多个子标题对象。JFreeChart提供了5种Title的实现,可以是图片、文本、图例等的形式。

 


 数据源处理
JFreeChart 中的数据源是DataSet接口类型。该接口有三个主要的子类接口:CategoryDataset、PieDataset、SeriesDataset

CategoryDataset 接口的实现类基本上都维护了一个三元组<value,row,col>的列表结构。不同的实现类中value 的类型不相同。<row,col>唯一确定一个三元组。CategoryDataset的实现类提供对这个三元组的增删改查操作。

PieDataset 接口有两个主要的实现类:CategoryToPieDataset 、DefaultPieDataset。PieDataset接口的实现类基本上都维护了一个二元组<key,value>的列表结构。Key唯一确定一个二元组。CategoryDataset的实现类提供对这个二元组的增删改查操作。CategoryToPieDataset中的二元结构列表通过对CategoryDataset类型的对象指定行或者列转化过来。DefaultPieDataset直接维护一个二元结构列表。

SeriesDataset 接口的实现类基本上都维护了一种特定数据结构的列表。以TimeSeriesCollection为例。它维护一个TimeSeries对象列表,提供对该列表的增删查操作。每个TimeSeries对象维护一个<time,value>列表,提供对该列表的增删改查操作。

 
  
 
 

分享到:
评论
1 楼 xwq18 2010-05-05  
谢谢,很好很强大!

相关推荐

    jfreechart说明.txt

    二、JFreeChart获取。 JFreeChart 是JFreeChart公司在开源网站...获取地址:http://www.jfree.org/jfreechart/index.html(同时可以获得简明介绍) 我们以当前最新版本:jfreechart-1.0.1.zip为例子进行说明。

    JFreeChart中文API详解

    这个压缩包里面有三个文件 ...JFreeChart中文API(1).mht JFreeChart中文文档.htm 内容差不多,都提供出来方便大家看 主要是介绍了每个API的方法都是用来做什么用得,解释是中文的感觉还是比较有用的.

    产品销售分析系统spring struts2 jfreechart ibatis

    产品销售分析系统示例源码的目录结构介绍 /product: 案例项目工程源码。 /database: 案例数据库文件。 产品销售分析系统的安装配置介绍 运行环境: 1 Java平台选择JDK 6.0或更高版本。 2 Web服务器选择Tomcat 5.0...

    jfreechart插件将数据展示成饼状图、柱状图和折线图

    本文以展示柱状图为例进行介绍,当然这仅仅是一种方法而已;还有很多方法可以用于展示图表,例如自定义图表标签、使用jfreechart插件等; 1、导入js文件,包含了很多展示方法: 代码如下: [removed]&gt;[removed] ...

    Java开发实战1200例第1卷.pdf.part1

    介绍了应用Java进行程序开发的多方面的知识和技巧,主要包括Java的图形图像、动画游戏、网络应用技术、Applet应用、XML、JFreeChart图表开发和PDF文档处理等内容。全书分为6篇21章,共计598个实例,每个实例都经作者...

    Java.Web整合开发王者归来.part1(共3部分)

    本书全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇 ,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发 概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过 滤器...

    Java Web整合开发王者归来1/16

    本书全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器...

    Java开发实战1200例第1卷.pdf.part4

    介绍了应用Java进行程序开发的多方面的知识和技巧,主要包括Java的图形图像、动画游戏、网络应用技术、Applet应用、XML、JFreeChart图表开发和PDF文档处理等内容。全书分为6篇21章,共计598个实例,每个实例都经作者...

    Java Web开发中的动态图表设计 (1).pdf

    JFreeChart是java中开源的制图组件,为实现java web动态图表对数据进行统计分析,该文介绍了JFreeChart的核心对象:制图对象、制图工厂对象、数据集合对象、绘图区对象、坐标轴对象、图片渲染对象,介绍了制图过程。

    Java.Web整合开发王者归来.part1

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。 第1篇为入门篇,内容包括Java Web开发概述等; ...

    Java Web整合开发王者归来:Java Web.part1

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...

    Java开发实战1200例第1卷.pdf.part5

    介绍了应用Java进行程序开发的多方面的知识和技巧,主要包括Java的图形图像、动画游戏、网络应用技术、Applet应用、XML、JFreeChart图表开发和PDF文档处理等内容。全书分为6篇21章,共计598个实例,每个实例都经作者...

    Java开发实战1200例第1卷.pdf.part2

    介绍了应用Java进行程序开发的多方面的知识和技巧,主要包括Java的图形图像、动画游戏、网络应用技术、Applet应用、XML、JFreeChart图表开发和PDF文档处理等内容。全书分为6篇21章,共计598个实例,每个实例都经作者...

    Java Web整合开发王者归来(共4部分含源代码)part1

    第8篇为工具篇,内容包括在Java Web项目中常用的开源工具框架、主要有版本管理工具SVN、日志工具commons-logging与Log4J、报表图形引擎JFreeChart、PDF组件iText等;第9篇为实战篇,内容为两个典型的应用系统:论坛...

    北风客户关系管理源码 CRM

    这个项目所涉及的知识点包括SSH三大框架,同时也介绍了其他常用的框架,如Jquery、Jfreechart等,在介绍了新技术点的同时重点让大家了解了CRM的业务知识,TBC(技术+业务+沟通)是优秀程序员必不可少三要素。...

    Java.Web整合开发王者归来.pdf

    本书全面介绍了java web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括java web开发概述等;第2篇为基础篇,内容包括servlet技术、jsp技术、会话跟踪、过滤器...

    Java.Web整合开发王者归来.part2.rar (共3部分)

    本书全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇 ,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发 概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过 滤器...

    Java.Web整合开发王者归来.part3.rar (共3部分)

    本书全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇 ,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发 概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过 滤器...

    Java Web整合开发王者归来2/16

    本书全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第 1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器...

    Java Web 整合开发王者归来9/16

    本书全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第 1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟 踪、过滤器...

Global site tag (gtag.js) - Google Analytics