2 .1 JFreeChart对象
JFreeChart 可以生成很多图形对象,它的工厂类提供了 33 个工厂方法用于生成不同的图形对象(具体的工厂方法可以参见 JFreeChart 的 API 手册或者源码中的 ChartFactory 类 )。JFreechart 对图形对象的抽象具体化。图形对象( JFreeChart ),由 Title( 主标题 ) , SubTitle (子标题 ) , Plot (图形的绘制结构)等几个主要对象组成。
这是一个 JFreeChart 对象,上面的“ chart 标题”是 Title 对象,中间区域是 Plot 对象(包括绘图区域和坐标轴区域),下面的区域是 LegendTitle 对象,是一种 SubTitle 对象。
每个 JFreeChart 对象只能有 1 个 Title 对象, 1 个 Plot 对象,可以有多个 SubTitle 对象。 JFreeChart 对象可以进行的操作有:背景的设置(背景颜色、背景图片、透明度等)、边框的设置(是否可见、笔画、 Paint 等)、渲染方式的设置、标题对象的设置、子标题对象的增删查操作。(本文中的所有操作都不提供代码级的介绍,可参见 API 手册或者源码)
2 .2主标题对象
主标题对象是 TextTitle 类型,可以进行的操作有:背景设置、字体设置(字体类型、颜色、内容、对齐方式等操作)、 tooltip 设置、 URL 设置。
2 .3Plot 对象
Plot 对象是图形的绘制结构对象。 JFreeChart 中含有很多不同的 Plot 对象,每一种图形对象中的 Plot 对象都在实例化的时候创建。所有的 Plot 共有的操作有:背景设置(背景颜色、背景图片、透明度等)、前景透明度设置、无数据存在情况的设置(显示的字符内容、显示的字体、显示的 Paint )、放大缩小比例的设置,大部分 Plot 对象还有设置 Datset 、设置 Renderer 对象操作。
JFreeChart 中有 18 种 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 对象完成画图操作。
2 .3.1 Renderer对象
Renderer 对象是图形的绘制单元。 JFreeChart 提供了两个接口 CategoryItemRenderer 和 XYItemRenderer 、 1 个抽象类 AbstractRenderer 供具体的 Renderer 类实现,给出了将近 50 种具体实现类。
一般来说 Renderer 对象可进行的操作有:对 item label (下图中的柱状图上的红色数字即为 item label 的示例)的默认设置( item label 的产生方式、是否可见、字体、 Paint 、正反向 item label 的位置设置等)、绘制图形的边框默认设置( Paint 、笔画、是否可见等)、绘制图形的默认设置(形状、笔画、是否可见、对应的图例中是否可见等,折线图还有线条是否可见、折点图形是否可见、折点图形是否填充、折点图形的形状、对应的图例中线条是否可见、图形是否可见、整体是否可见等)、以及对指定 item label 的设置、指定绘制图形的设置。可以说和具体绘制的图形相关的属性都可以通过 Renderer对象设置。
不同的 Renderer的实现类实现了不同的显示方式,在含有 Renderer对象的 JFreeChart对象中, Renderer 对象决定了JFreeChart对象的显示方式。例如:柱状图的Plot对象中默认的Renderer对象是 CategoryItemRenderer 对象,通过设置 Plot 对象的Renderer对象 为 LineAndShapeRenderer ,则柱状图变为线图。使用中一般不需要显式的实例化一个Renderer 对象,一般通过 JFreeChart对象的 Plot 对象调用现有的 Renderer 对象进行重新设置等操作。
2 .3.2 Axis对象
JFreeChart提供了两种类型的坐标轴: CategoryAxis(等级轴)和 ValueAxis(值轴), ValueAxis又有 3个子类: DateAxis(时间轴)、 NumberAxis(数字轴)、 PeriodAxis(时期轴)。这些坐标轴还有更详细的子类,不再一一列举
Axis 对象可进行的操作有:标题的设置(内容、字体、Paint、显示角度等)、坐标线的设置(笔画、Paint、是否可见等)、刻度线的设置(是否可见、笔画、Paint、位于绘图区域的长度、位于绘图区域外的长度等)、刻度标示的设置(笔画、Paint、字体、与轴的距离等)、坐标轴范围设置等。
CategoryAxis对象还可以进行的操作有: 刻度标示间距设置( 最小间距、最大间距、指定间距)等。
ValueAxis对象可进行的操作有:轴端设置(显示的图形形状)、范围设置(是否自动产生范围、自动产生的最小范围、最大范围、指定确定范围、指定范围大小等)、间隔设置(是否自动产生间隔、指定间隔)等。
DateAxis对象还有对时间刻度显示格式的设置操作。
2. 4子标题对象
子标题对象是 Title类型的对象,一个JFreeChart可以有多个子标题对象。JFreeChart提供了5种Title的实现,可以是图片、文本、图例等的形式。
3数据源处理
JFreeChart 中的数据源是DataSet接口类型。该接口有三个主要的子类接口:CategoryDataset、PieDataset、SeriesDataset
CategoryDataset 接口的实现类基本上都维护了一个三元组的列表结构。不同的实现类中value的类型不相同。唯一确定一个三元组。CategoryDataset的实现类提供对这个三元组的增删改查操作。
PieDataset接口有两个主要的实现类:CategoryToPieDataset、DefaultPieDataset。PieDataset接口的实现类基本上都维护了一个二元组的列表结构。Key唯一确定一个二元组。CategoryDataset的实现类提供对这个二元组的增删改查操作。CategoryToPieDataset中的二元结构列表通过对CategoryDataset类型的对象指定行或者列转化过来。DefaultPieDataset直接维护一个二元结构列表。
SeriesDataset接口的实现类基本上都维护了一种特定数据结构的列表。以TimeSeriesCollection为例。它维护一个TimeSeries对象列表,提供对该列表的增删查操作。每个TimeSeries对象维护一个列表,提供对该列表的增删改查操作。
三 JFreeChart 中对常见图形的处理
JFreeChart并不存在多个不同的类来生成不同的图形。所有的图形都是具体类 JFreeChart的实例化对象,初始化 JFreeChart对象的时候通过指定不同的 Plot实现类就可以显示出不同的图形。不同的 Plot实现类具有不同的 Renderer对象、 Axis对象、 Dataset对象。
JFreeChart提供工厂类 ChartFactory方便使用者生成各种不同的图形。 ChartFactory类的各个工厂方法中实现对具体 Plot的指定以及对类 JFreeChart构造函数的调用。
下面以常用图形说一下常用的使用流程(大部分的操作讲的并不全面,比如 JFreeChart可能提供了很多增加、修改数据的方式,下文中可能只列举一种)。
1柱状图
( 1)平面柱状图
生成柱状图操作:
JFreeChart chart = ChartFactory.createBarChart(
String title, //图标题
String categoryAxisLabel, //x轴标题
String valueAxisLabel, //y轴标题
CategoryDataset dataset, //数据源
PlotOrientation orientation, //显示方向
boolean legend, //是否显示图例
boolean tooltips, //是否显示 tooltip
boolean urls); //是否指定 url
平面柱状图的 Plot对象是 CategoryPlot类型。 CategoryPlot对象的 x轴是 CategoryAxis对象, y轴是 NumberAxis对象,绘制单元是 BarRenderer对象,数据源是 CategoryDataset对象。
获取 CategoryPlot对象操作为:
CategoryPlotplot = ( CategoryPlot) chart.getPlot(); 或者
CategoryPlot plot = chart.getCategoryPlot();
获取绘制单元操作:
BarRenderer renderer = (BarRenderer) plot.getRenderer();
获取 x轴的操作:
CategoryAxisxAxis = ( CategoryAxis ) plot.getDomainAxis();
获取 y轴操作:
NumberAxis yAxis = (NumberAxis) plot.getRangeAxis();
获取数据源:
CategoryDataset dataset=plot.getDataset();
柱状图可以接受一切 CategoryDataset类型的数据源,下面讲解一下常用的 CategoryDataset类型 DefaultCategoryDataset的使用方式
实例化:
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
增加数据
dataset .addValue(double value, Comparable rowKey, Comparable columnKey) ;
删除数据:
dataset .removeValue(Comparable rowKey, Comparable columnKey);
或者
dataset. removeColumn(int columnIndex);
或者
dataset. removeColumn(Comparable columnKey);
对行同样有上述两种删除方式,不在列举。
修改数据:
dataset. setValue(double value, Comparable rowKey, Comparable columnKey);
查询数据 :
对 plot对象、绘制单元、 x轴、 y轴的显示特性修改不再一一介绍。
( 2) 3D柱状图
对应的工厂方法为 createBarChart3D,该方法的参数与平面柱状图相同。 3D柱状图的 Plot对象是 CategoryPlot类型。 CategoryPlot对象的 x轴是 CategoryAxis3D对象, y轴是 NumberAxis3D对象,绘制单元是 BarRenderer3D对象,数据源是 CategoryDataset对象。
具体使用以及操作与平面柱状图雷同,不在详述。
2饼状图
(1)平面饼状图
生成平面饼状图:
JFreeChart chart = ChartFactory. createPieChart(String title,// 图标题
PieDataset dataset, // 数据源
boolean legend, // 是否显示图例
boolean tooltips, // 是否显示tooltip
boolean urls); // 是否指定url
平面饼状图的Plot对象是PiePlot类型。PiePlot对象没有x轴对象、y轴对象、绘制单元对象,数据源是PieDataset对象。
获取PiePlot对象操作为:
PiePlot plot = (PiePlot) chart.getPlot();
获取数据源:
PieDataset dataset= plot .getDataset();
饼状图可以接受一切 PieDataset类型的数据源,下面讲解一下常用的 PieDataset类型 DefaultPieDataset的使用方式
实例化:
DefaultPieDataset dataset = new DefaultPieDataset();
增加修改操作:
dataset. setValue(Comparable key, double value);
删除操作:
dataset. remove(Comparable key);
查询操作:
dataset.getKey(int item);
或者
dataset. getValue(int item);
(1)3D饼状图
对应的工厂方法为 createPieChart3D,参数与平面饼状图相同。与平面饼状图的差别在于 Plot 对象是PiePlot3D类型 ,不再详述。
3多重饼状图
( 1)多重平面饼状图
生成多重平面饼状图:
JFreeChart chart = ChartFactory. createMultiplePieChart
(String title, //图标题
CategoryDataset dataset, //数据源
TableOrder order, //指定提取数据的方式(按行或者按列)
boolean legend, //是否显示图例
boolean tooltips, //是否显示 tooltip
boolean urls) ; //是否指定 url
多重平面饼状图的 Plot对象是 MultiplePiePlot类型。 MultiplePiePlot对象没有 x轴对象、 y轴对象、绘制单元对象,数据源是 CategoryDataset对象。 MultiplePiePlot对象中可以含有多个子 JFreeChart对象,子 JFreeChart对象是上面讲过的饼状图对象。
获取 MultiplePiePlot对象操作为:
MultiplePiePlot plotMain = (MultiplePiePlot) chart.getPlot();
获取子 JFreeChart的操作为:
JFreeChart childChart=plotMain.getPieChart();
获取数据源:
CategoryDataset dataset= plotMain .getDataset();
( 2)多重 3D饼状图
对应的工厂方法为 createMultiplePieChart3D,该方法的参数与 多重平面饼状图 相同。 多重 3D饼状图的 Plot对象是 MultiplePiePlot类型。 MultiplePiePlot对象中可以含有多个子 JFreeChart对象,子 JFreeChart对象是上面讲过的 3D饼状图对象。
4线图
( 1)平面线图
生成平面线图:
JFreeChart chart = ChartFactory. createLineChart(String title, //图标题
String categoryAxisLabel, //x轴标题
String valueAxisLabel, //y轴标题
CategoryDataset dataset, //数据源
PlotOrientation orientation, //显示方向
boolean legend, //是否显示图例
boolean tooltips, //是否显示 tooltip
boolean urls); //是否指定 url
平面线图除了的 Plot对象中绘制单元对象是 LineAndShapeRenderer对象,其他一切组成对象与平面柱状图相同。
获取 Renderer操作:
LineAndShapeRenderer renderer=(LineAndShapeRenderer) plot.getRenderer();
其他参考平面柱状图。
( 2) 3D线图
对应工厂方法为 createLineChart3D,参数与 createLineChart相同。 3D线图的组成对象除了绘制单元对象是 LineAndShapeRenderer3D对象,其他一切组成对象与 3D柱状图相同。
5时序图
生成时序图:
JFreeChart chart = ChartFactory.createTimeSeriesChart(
String title, // 图标题
String timeAxisLabel, //x 轴标题
String valueAxisLabel, //y 轴标题
XYDataset dataset, // 数据源
boolean legend, // 是否显示图例
boolean tooltips, // 是否显示 tooltip
boolean urls); //
分享到:
相关推荐
ACM比赛赛资料汇总.zipACM比赛赛资料汇总.zipACM比赛赛资料汇总.zipACM比赛赛资料汇总.zipACM比赛赛资料汇总.zipACM比赛赛资料汇总.zipACM比赛赛资料汇总.zipACM比赛赛资料汇总.zipACM比赛赛资料汇总.zipACM比赛赛...
java学习java学习资料总结.zipjava学习资料总结.zipjava学习资料总结.zipjava学习资料总结.zipjava学习资料总结.zipjava学习资料总结.zipjava学习资料总结.zipjava学习资料总结.zipjava学习资料总结.zipjava学习资料...
各类过滤器设计选型资料汇总.pdf
超全的TSN介绍资料汇总超全的TSN介绍资料汇总超全的TSN介绍资料汇总超全的TSN介绍资料汇总超全的TSN介绍资料汇总超全的TSN介绍资料汇总超全的TSN介绍资料汇总超全的TSN介绍资料汇总超全的TSN介绍资料汇总超全的TSN...
红队渗透测试攻防学习工具分析研究资料汇总.pdf
qt资料汇总,chm格式的,费了很大劲收集到的,比较珍贵,对于学习QT有很大帮助。
FarPoint Spread 资料汇总(介绍FarPoint Spread属性、事件、方法)
电子竞赛B题_开关电源资料汇总.zip程序资料开关电源设计电路原理资料电子竞赛B题_开关电源资料汇总.zip程序资料开关电源设计电路原理资料电子竞赛B题_开关电源资料汇总.zip程序资料开关电源设计电路原理资料电子竞赛...
暨南大学《通信原理》期末考试复习资料汇总版
2023java最新面试资料汇总,包含: 10万字总结java面试题和答案一份 阿里大佬总结的Java面试资料一份 面试汇总网盘资源一份 MIC老师最新面试文档一份 面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象...
646、最全智能小车资料汇总(带原理图、源代码、完整论文、开发资料等) 该资料为最全智能小车资料汇总,资料包括如下: 1、07年国赛电动车上跷跷板程序源码; 2、基于51单片机的红外遥控小车设计和制作; 3、基于51...
教程名称:SAP Business One学习资料汇总课程目录:【】R3功能详解-分销管理【】SAP IDES FI操作的练习资料汉化版和原版【】SAP R3技术与实现之-SAP项目与实施(文件解压错误)【】SAP中小企业解决方案(pdf38)下载-E化...
复旦大学《病理》期末考试复习资料汇
全套AIGC资料汇总
"408考研资料汇总.zip" 是一个针对408计算机学科专业基础综合考试的压缩文件,其中包含了一系列备考资源。408计算机学科专业基础综合是中国研究生入学考试中的一个科目,主要测试考生的计算机科学与技术、软件工程等...
7个JSP小项目源代码和笔记资料汇总,正在学习JSP的朋友可不要轻易错过哦,这些小项目的清单如下: 项目01_JSP+JDBC留言管理程序(代码+笔记) 项目02_使用JSP完成简单的登陆程序(代码+笔记) 项目03_JSP+DAO...
总结来说,人事资料汇总表是企业管理中的核心工具,它帮助企业全面掌握员工信息,实现人力资源的有效管理和优化。而利用在线资源平台,如“管理资源吧”,则能提升企业管理的效率和质量。因此,正确使用和维护人事...
vExtJs参考资料汇总ExtJs参考资料汇总ExtJs参考资料汇总ExtJs参考资料汇总
教程名称:Alcatel阿尔卡特数通产品资料汇总课程目录:【】Alcatel-Lucent阿尔卡特全系列交换机【】Alcatel阿尔卡特7750SR路由器介绍【】Alcatel阿尔卡特7750SR路由器培训资料总结【】Alcatel阿尔卡特数据通信产品线...