JFreeChart与专题地图

更新时间:2023-06-08 14:57:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

jfreechart与专题地图

JFreeChart与专题符号

1、JFreechart剖析 2、专题符号实现

jfreechart与专题地图

1、JFreechart剖析1.1 简介 开源的Java图形开发包,可以实现饼图、柱状图、线图、点图、时序图、 甘特图、股票行情图、混和图 、温度计图、刻度图等常用商用图表 最新版本为JFreeChart 1.0.13,可以到/jfreechart/premium/download.html下载源代码及开发帮助文档 解压jfreechart-1.0.13.zip到指定位置,其中lib是包目录,source是jfreechart 的源码,jfreechart-1.0.13-demo.jar 是例子程序,开发时候加入下面三个jar 包:jfreechart-1.0.13.jar 、jcommon-1.0.13.jar、gnujaxp.jar

jfreechart与专题地图

1、JFreechart剖析1.2 基本结构 JFreeChart常用的API大致可以分为Dataset、Plot、Axis、Renderer、 JFreeChart、URLGenerator、ToolTipGenerator、ChartFactory几大类

jfreechart与专题地图

1、JFreechart剖析1.3 图形对象 JFreeChart对象– JFreeChart 库中最重要的类之一是它本身,名为 JFreeChart – JFreeChart 可以生成很多图形对象,它的工厂类提供了 33 个工厂方法 ( ChartFactory 类 )用于生成不同的图形对象 – 图形对象(JFreeChart) ,由主标题 (Title) ,子标题 (SubTitle) ,图形的绘制结 构(Plot),图例(Legend)等几个主要对象组成 – 每个 JFreeChart 对象只能有 1 个 Title 对象, 1 个 Plot 对象,可以有多 个 SubTitle 对象。 JFreeChart 对象可以进行的操作有:背景的设置(背景颜 色、背景图片、透明度等)、边框的设置(是否可见、笔画、 Paint 等)、渲 染方式的设置、标题对象的设置、子标题对象的增删查操作。

jfreechart与专题地图

1、JFreechart剖析1.3 图形对象的处理 Plot对象– 图形的绘制结构对象。图形对象包含多种不同的Plot对象,每个Plot对象都在实例 化的时候创建。所有的Plot共有的操作有:背景设置、前景透明度设置、无数据存 在情况的设置、放大缩小比例的设置,大部分 Plot 对象还有设置 Datset 、设 置 Renderer 对象操作 – Plot 的具体实现类主要由以下重要对象组成: 渲染对象(Renderer),数据源 (Dataset) ,区域轴(DomainAxis,相当于 x 轴) ,范围轴(RangeAxis,相当于 y 轴) – 不同的 Plot 对象组成方式不尽相同,一般都含有 Datset 对象。饼状图相关 的 Plot 对象(MultiplePiePlot 、 PiePlot 、 PiePlot3D 、 RingPlot)中都不含 有 Renderer 对象、 DomainAxis 对象、 RangeAxis 对象

jfreechart与专题地图

1、JFreechart剖析1.3 图形对象的处理 Dataset接口– 定义了产生图表时所需要的数据结构,有三个主要的子类接口:CategoryDataset、 PieDataset、SeriesDataset – CategoryDataset 接口的实现类维护一个三元组<value,row,col>的列表结构。不同的 实现类中value 的类型不相同。<row,col>唯一确定一个三元组。CategoryDataset的 实现类提供对这个三元组的增删改查操作 – PieDatas

et 接口的实现类维护一个二元组<key,value>的列表结构。Key唯一确定一 个二元组。 PieDataset的实现类提供对这个二元组的增删改查操作。可通过对 CategoryDataset类型的对象指定行或者列转化为一个二元组 – SeriesDataset 接口的实现类维护一种特定数据结构的列表。以TimeSeriesCollection 为例。它维护一个TimeSeries对象列表,提供对该列表的增删查操作。每个 TimeSeries对象维护一个<time,value>列表,提供对该列表的增删改查操作

jfreechart与专题地图

1、JFreechart剖析1.3 图形对象的处理 Renderer对象– 图形的渲染对象。 JFreeChart 提供了两个接 口 CategoryItemRenderer 和 XYItemRenderer 、 1 个抽象类 AbstractRenderer 供具体 的 Renderer 类实现,给出了将近 50 种具体实现类 – Renderer 对象可进行的操作有:对 item label 的默认设置、绘制图形的边框默认设 置、绘制图形的默认设置、以及对指定 item label 的设置、指定绘制图形的设置。 与具体绘制的图形相关的属性都可以通过 Renderer 对象设置 – 不同的 Renderer 的实现类实现了不同的显示方式,在含有 Renderer 对象 的 JFreeChart 对象中, Renderer 对象决定了JFreeChart对象的显示方式。例如:柱 状图的Plot对象中默认的Renderer对象是 BarRenderer 对象,通过设置 Plot 对象的 Renderer对象为 LineAndShapeRenderer ,则柱状图变为线图。使用中一般不需要 显式的实例化一个 Renderer 对象,一般通过 JFreeChart 对象的 Plot 对象调用现有 的 Renderer 对象进行重新设置等操作

jfreechart与专题地图

1、JFreechart剖析1.3 图形对象的处理 Axis对象– JFreeChart 提供了两种类型的坐标轴: CategoryAxis (类别轴)和 ValueAxis (值 轴),RangeAxis 又有 3 个子类: DateAxis (时间轴)、 NumberAxis (数字 轴)、 PeriodAxis (时期轴) – Axis 对象可进行的操作有:坐标轴标题的设置、坐标线的设置(笔画、Paint、是 否可见等)、刻度线的设置(是否可见、笔画、Paint、位于绘图区域的长度、位 于绘图区域外的长度等)、刻度标示的设置(笔画、Paint、字体、与轴的距离 等)、坐标轴范围设置等 – CategoryAxis 对象还可以进行的操作有: 刻度标示间距设置( 最小间距、最大间 距、指定间距)等 – ValueAxis 对象可进行的操作有:轴端设置(显示的图形形状)、范围设置(是否 自动产生范围、自动产生的最小范围、最大范围、指定确定范围、指定范围大小 等)、间隔设置(是否自动产生间隔、指定间隔)等 – DateAxis 对象还有对时间刻度显示格式的设置操作

jfreechart与专题地图

1、JFreechart剖析1.4 生成图表 图表 建立Dataset。所有的数据都存放在Dataset中的。(创建一个数据源(dataset)来 包含将要在图形中显示的数据) 建立JFreeCha

rt。将dataset中的数据导入到JFreeChart中。(创建一个 JFreeChart 对 象来代表要显示的图形 ) 设置JFreeChart的显示属性。这一步可以省略,使用默认的JFreeChart显示属性 渲染图表。即生成图片 页面图片显示

jfreechart与专题地图

1、JFreechart剖析1.5 示例

jfreechart与专题地图

2、专题符号实现2.1 类结构

jfreechart与专题地图

2、专题符号实现2.1 类结构 TChart类– TChart类为专题符号的抽象基类,定义了符号的共同参数 – JFreechart对各种图表没有抽象出继承关系,只是用一个静态工厂类的静态方法来 生成多种JFreechart对象;专题符号各子类的继承关系如下:

jfreechart与专题地图

2、专题符号实现2.1 类结构 ISymbol接口及ISymbolFactory接口– ISymbol为符号绘制的接口,其方法包含drawSymbol、drawLegend等 – TChart类及其子类实现了ISymbol接口 – 每个chart子类对应一个工厂类,用于生成该类的实例,该工厂类实现了 ISymbolFactory接口 – ISymbolFactory用于生成ISymbol接口,进而调用不同的符号对象生成符号

jfreechart与专题地图

2、专题符号实现2.1 类结构 JThematicChart类– 专题符号的实施类,对应于图集中的一幅插图,包含数据集对象、图例对象、标 注对象等,根据客户端请求读取数据库填充数据集对象,根据系统配置文件初始 化图例对象、标注对象,调用工厂类生成专题符号,并绘制为图片返回客户端

PropertiesUtil p = new PropertiesUtil(); Properties properties=p.getProperties(); String symbolFactory=properties.getProperty(String.valueOf(chartType)); ISymbolFactory iSymbolFactory=(ISymbolFactory) Class.forName(symbolFactory).newInstance(); ISymbol iSymbol=iSymbolFactory.createSymbol();

jfreechart与专题地图

2、专题符号实现2.2 流程 解析客户端请求,获取当前请求图幅、图表类型、时间等参数 根据图表类型调用工厂类生成相应的图表对象 判断当前范围内的符号个数,并读取相应数据装载到Dataset接口 生成在当前范围内的各个JFreechart对象,根据符号定位点坐标绘制成一 幅透明的PNG图片,同时生成map标签,传送到客户端

jfreechart与专题地图

谢谢!

本文来源:https://www.bwwdw.com/article/hqf1.html

Top