1 简介
JFreeChart 是 SourceForge.net 上的一个开源项目,它的源码和 API 都可以免费获得。 JFreeChart 的功能非常强大,可以实现饼图 ( 二维和三维 ) , 柱状图 ( 水平 , 垂直 ), 线图 , 点图 , 时序图 , 甘特图 , 股票行情图 , 混和图 , 温度计图 , 刻度图等常用商用图表, 图形可以导出成 PNG 和 JPEG 格式,同时还可以与 PDF 和 EXCEL 关联,支持对图形的放大、缩小,支持常见图形的 3D 显示。
2 图形 对象的处理
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 .3 Plot 对象
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 对象完成画图操作。
仍以上面的图形讲解 Plot 对象的组成。
上图的中间区域是是一个 XYPlot 对象。其中的折线部分即是图形的绘制单元 Renderer 对象。 X 轴是 DomainAxis , y 轴是 RangeAxis ,其中 Datset 对象属于数据模型范畴,是 UI 不可见对象。该图中的 plot 背景色、网格线的各种设置可以通过 XYPlot 对象本身完成。
下面讲解 Renderer 对象、 Axis 对象( X 轴、 y 轴都属于 Axis 对象), Datset 对象在后续章节中专门讲解。
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 对象中, R enderer 对象决定了JFreeChart对象的显示方式。例如:柱状图的Plot对象中默认的Renderer对象是 CategoryItemRenderer 对象,通过设置 Plot 对象的Renderer对象 为 LineAndShapeRenderer ,则柱状图变为线图。使用中一般不需要显式的实例化一个 R enderer 对象,一般通过 JFreeChart 对象的 Plot 对象调用现有的 R enderer 对象进行重新设置等操作。
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的实现,可以是图片、文本、图例等的形式。
(数据源以及常用图形的处理以及进一步的讨论在后续文章中介绍)
分享到:
相关推荐
深入探究JFreeChart,详细介绍了JFreeChart中各类的使用方法以及需要注意的地方,初学起来很轻松
JFreeChart 是一个强大的 Java 图形库,专用于创建各种商业图表,如饼图、柱状图、线图、甘特图、股票图等。它是一个开源项目,可以在 SourceForge.net 上获取其源码和 API。JFreeChart 提供了丰富的功能,包括支持...
接着,"【原创】深入探究JFreeChart(1).mht"和"【原创】深入探究JFreeChart(2).mht"是一篇关于JFreeChart的深度教程。MHT是单一文件网页,这种格式将HTML、图像和其他资源打包在一个文件中,方便阅读和分享。这...
这份“JFreeChart深入探究实用文档”是学习和掌握JFreeChart的宝贵资源,下面我们将详细探讨其主要知识点。 1. **JFreeChart基础** - **安装与引入**:首先,了解如何将JFreeChart库添加到项目中,无论是通过Maven...
在深入研究JFreeChart时,有几个关键知识点值得关注: 1. **图表类型**:了解JFreeChart支持的各类图表,如折线图、柱状图、饼图、散点图、甘特图等,以及它们各自的用途。 2. **数据模型**:理解如何将数据映射到...
通过查看源代码,开发者可以深入探究内部实现细节,理解数据如何被处理,以及各种图表组件是如何构建的。这对于定制图表功能或优化性能的开发者来说尤其有用。如果你遇到了特定问题,查阅源代码可能帮助你找到解决...
《精通Java Web动态图表编程》这本书是专门为...总的来说,《精通Java Web动态图表编程》这本书将引导你深入探究Java Web开发中的动态图表制作,让你能够创建出美观、交互性强的可视化应用,提高业务分析和决策的效率。
【JSP科研处管理信息系统】是一个基于Java Server...通过对这些知识点的理解,可以深入探究【JSP科研处管理信息系统】的设计思路和实现方式,无论是对于学习JSP技术,还是提升科研管理信息化水平,都有很高的参考价值。
3. **数据关系分析**:股票指数与国家经济的关系可以通过收集历史数据进行统计分析,例如使用相关性分析、回归分析等方法,探究二者之间是否存在显著的正相关或负相关关系。 4. **Java编程**:在处理这类问题时,...
在深入探究ShotCaller项目时,开发者和研究人员可以学习到如何将Java应用于数据科学项目,以及如何解决实际工程问题。这个项目不仅展示了Java在数据分析领域的应用,也反映了机器学习在科学研究中的重要作用。通过...
"Test4U: 在线考试门户"是一款基于Java技术构建的平台,专为教育和培训领域...对于学习和理解Java Web开发,这个项目提供了丰富的实践素材,可以深入探究MVC架构、数据库设计、安全策略以及测试方法等多个关键知识点。
本文将深入探讨HBase的性能测试细节,重点剖析数据插入性能,并通过实证分析揭示其背后的机制与优化策略。 #### 数据插入性能测试设计 在评估HBase的实时数据插入性能时,测试场景设计至关重要。以随机值的Rowkey...
《MyTeaProject:探索Java技术的茶文化实践》 ...通过深入探究这个项目,我们可以了解到如何利用Java技术来创新,将传统的茶文化以现代化的方式呈现,同时也能提升自己的编程技能和项目管理能力。
总的来说,这个作业挑战了我们在数据处理、统计分析和Java编程方面的能力,并提供了深入了解城市犯罪与社会因素之间复杂关系的机会。通过这个项目,不仅可以提升技术技能,还能培养数据分析思维,为解决实际问题提供...
《探究Java技术在Wikipedia反向链接分析中的应用》 在信息技术领域,数据挖掘与分析是一项重要的工作,尤其是在网络环境中,海量的数据蕴含着无尽的信息价值。Wikipedia,作为全球最大的在线百科全书,其丰富的链接...
5. **数据分析与可视化**:框架可能包含各种统计分析和可视化工具,用于探究版本控制、bug报告和邮件列表之间的关系,例如,哪些bug最常被提及,哪些开发者在邮件列表中最活跃,重构活动与bug修复之间的时间间隔等。...