频道直达:新闻 - 组网 - 安全 - 服务器 - 存储 - 系统 - 应用 - 开发 - 数据库 - 前沿 - 技术人 - 培训 - 求职 - 读书 - 教程 - 专题 - 产品 - 案例 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

使用JFreeChart显示您的Oracle数据库数据(12)

作者: Dustin Marx/Michael G. Martin 出处:Oracle 2007-10-10 13:14    砖    好    评论   进入论坛
阅读提示:本文讲解如何使用JFreeChart轻松绘制Oracle数据库数据图表,并可以选择多种高质量的图表类型。在本文中,我们将使用Oracle数据库10g快捷版(XE)中的HR模式数据提供一个该过程的示例。

清单 18: 使用 DatasetReader 处理 XML 输入用于图表生成

   /**
* Create 3D pie chart displaying the number of employees at each
* commission level.This method demonstrates use of DatasetReader to
* translate data from XML format to JFreeChart data format.
    * 
* @return 3D Pie Chart showing number of employees at each commission
*         level.
    */
public JFreeChart createCommissionsPercentagePerLevelPieChart()
   {
PieDataset pieData = null;

final String xmlData =
databaseAccess.getCommissionPercentageBreakdownAsXml();

final DatasetReader reader = new DatasetReader();
try
      {
pieData = reader.readPieDatasetFromXML(
new ByteArrayInputStream(xmlData.getBytes()) );
      }
catch (IOException ioEx)
      {
ioEx.printStackTrace();
      }

JFreeChart chart =
ChartFactory.createPieChart3D(
"Commissioned Employees at Each Commission Level",
pieData,
false, true, false );

// Chart specifically provides getCategoryPlot() and getXYPlot() methods,
// but not a getPiePlot() or getPiePlot3D() method.
final PiePlot3D plot = (PiePlot3D) chart.getPlot();
plot.setDepthFactor(0.35);       // pie depth 35% of plot height
plot.setForegroundAlpha(0.5f);   // Declare explicitly as float (50%)
plot.setLabelGenerator(new HrCommissionsPieGenerator());

return chart;
   }

清单 18 中在 DatasetReader 上调用的方法是专为 PieDataset 实施设计的,方法名 (readPieDatasetFromXML) 证明了这一点。JFreeChart 的 DatasetReader 当前支持的另一个类型的数据集是 CategoryDataset(用于条形图、直线图等)。

清单 18 中的方法返回的 JFreeChart 实例的行为方式与在前面所有示例中显示的相同类的实例的行为方式相似。换言之,这个从 XML 输入数据生成 JFreeChart 可以保存为 PNG 或 JPEG 文件,可以在 Swing 应用程序中显示,可以在 servlet 或 JSP 页面中显示,甚至可以作为 SVG 图像或在 PDF 文件内显示。

图 15 显示了从清单 18 中生成的 JFreeChart 显示的 PNG。

图15:用XML源数据生成的三维饼形图

当您用数据库数据构建图表时,直接从数据库结果构建通常要比先转换为 XML 然后再构建数据集简单。这是因为 XML 生成会给该过程增添额外的步骤,而且易于使用的 JDBC 数据集支持的图表类型要比 XML 的 DatasetReader 支持的更多。DatasetReader 支持 PieDataset 和 CategoryDataset,同时除了用于饼形图的 JDBC 数据集 (JDBCPieDataset) 和用于类别图的 JDBC 数据集 (JDBCCategoryDataset) 之外,还有一个用于基于 x,y 的图表的 JDBC 数据集 (JDBCXYDataset)。

当要绘制成图表的数据在 XML 中“本机”可用时,JFreeChart 对 XML 输入数据的支持很有用。但是,即使这个时候,数据的格式也可能不是 JFreeChart 所期望的。因此,源 XML 数据需要通过 XSLT、XQuery 或自定义处理转换为期望的 XML 格式。此外,XML 支持提供了一种简单的方法,将用于图表生成的静态数据编写为可以轻松手动编辑然后用于构建图表的纯文本文件。

除了演示如何使用 XML 为通过 JFreeChart 生成图表提供数据外,该示例还演示了使用 JFreeChart 的其他自定义可能。在本示例中,检索了绘图的特定类型 (PiePlot3D)。该绘图继承自 PiePlot 并增加了一些特定于其三维特性的方法(如本示例中应用的深度设置)。然后,可以使用该 PiePlot3D 向饼块中添加一些透明性,以使饼块更深,并自定义饼块的标签。将图 15 中的输出与本文前面的饼形图相比较演示了该自定义如何影响最终图表。

清单 18 包括对 HrCommissionsPieGenerator 类的引用。该类(其定义如清单 18 所示)覆盖了生成的饼形图中的饼块的标签。

清单 19: 自定义饼形图标签

public class HrCommissionsPieGenerator implements PieSectionLabelGenerator
{       
   /**
* Generates a customized label for a pie section of pie chart depicting
* commissions levels.
    * 
* @param aDataset Dataset destined for pie chart.
* @param aKey The identifying key for each section of the pie chart.
    * 
* @return Customized label for section of pie chart identified by aKey.
    */
public String generateSectionLabel(final PieDataset aDataset,
final Comparable aKey)
   {
String labelResult = null;
if (aDataset != null)
      {
labelResult = (int)(Double.parseDouble(aKey.toString())*100) +
"% sales (" + aDataset.getValue(aKey).intValue() +
" employees)";
      }
      
return labelResult;
   }
}

尽管我们提供了 9 个示例来演示 JFreeChart 的功能和灵活性,但还是有很多未尽之处。下一节概述本文没有重点描述的一些 JFreeChart 吸引人的特性。


共13页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 12 [13] 下一页
【内容导航】
 第 1 页:JFreeChart 简介  第 2 页:下载并“安装”JFreeChart
 第 3 页:示例1:使用饼形图直接绘制 HR 模式数据图表  第 4 页:示例2:使用三维饼形图间接绘制HR模式数据图表
 第 5 页:示例3:在Swing中生成条形图  第 6 页:示例4:在Java Servlet中生成图表
 第 7 页:示例5:使用Cewolf在JSP中生成图表  第 8 页:示例6:使用Apache Batik在SVG中生成图表
 第 9 页:示例7:使用iText在PDF中显示图表  第 10 页:示例8:自定义小图
 第 11 页:示例9:使用XML为JFreeChart提供输入数据  第 12 页:示例9的清单程序
 第 13 页:其他JFreeChart特性
专题
Sun以10亿美元并购开源数据库厂商MySQL
甲骨文Oracle 11g正式发布
Oracle数据库开发之PL/SQL基础应用
Oracle较真SAP-商业管理软件之战一触即发
Oracle数据库开发基础教程
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·SQL Server入门到精通 (查看120205次)
·SQL Server 2008/2005全解 (查看100798次)
·Oracle数据库开发指南 (查看48189次)
·MySQL数据库备份 (查看46621次)
·Oracle SQL 内置函数大全 (查看44460次)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。