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>列表,提供对该列表的增删改查操作。

 
  
 
 

你可能感兴趣的:(数据结构,.net,jfreechart,单元测试,Excel)