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

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

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

示例 6:使用 Apache Batik 在 SVG 中生成图表

无需任何专门的工作,JFreeChart 即可提供现成的 PNG 和 JPEG 图像生成。由于图表实际上是由直线以及诸如矩形、圆形以及其他矢量形状组成的,因此 SVG(可伸缩矢量图形)等基于矢量的格式似乎都非常适合图表。尽管 JFreeChart 并不直接提供 SVG 显示功能,但它可与 Apache 的 Batik SVG 工具包结合使用以形成其图表的 SVG 表示。

Batik SVG 工具包是一个基于 Java 的工具包,它用于操作 SVG,免费提供。本示例中使用 Batik 1.7。分发中包括几个可执行的 JAR 文件。其中一个文件 (batik.jar) 是一个可执行的 JAR,它运行一个名为 Squiggle 的 SVG 处理和查看工具 (java –jar batik.jar)。

在本示例中,我们首先将在自己的 Java 代码中将 Batik 直接用作一个库,然后将使用可执行的 JAR (batik.jar) 运行 Squiggle 以查看生成的 SVG 文件。为了构建和运行本示例中与 Batik 有关的代码,必须在类路径(或者 JDeveloper 或其他 IDE 的项目)中包括六个 JAR 文件。图 4 显示了这六个 JAR 文件(六个以“Batik”开头的 JAR 文件)。

在本示例中,生成的图表是一个显示发货员工资的三维条形图。这与前面的条形图示例(示例 3)不同,因为它具有三维而非二维的外观,并被指定为一个水平条形图而非垂直条形图。以下两个代码清单分别显示了如何生成该图表以及如何以 SVG 格式写出。

清单 9: 创建三维条形图

   /**
* Create 3D bar chart representing salaries of shipping clerks.
    * 
* @param aOrientation Horizontal or Vertical orientation.
* @return 3D bar chart.
    */
public JFreeChart createSalaryPerShippingClerkBarChart3D(
PlotOrientation aOrientation)
   {
JFreeChart barChart = null;
      
try
      {
final String QUERY_SALARY_PER_SHIPPING_CLERK =
"SELECT first_name || ' ' || last_name AS name, salary " +
"FROM employees " +
"WHERE job_id = 'SH_CLERK'";
final CategoryDataset barDataset =
new JDBCCategoryDataset( databaseAccess.getOracleDbConnection(),
QUERY_SALARY_PER_SHIPPING_CLERK );

barChart =
ChartFactory.createBarChart3D( TITLE_COUNTRIES_PER_REGION, // title
LABEL_SHIPPING_CLERKS,
LABEL_SALARIES,
barDataset,
aOrientation,
true,      // legend displayed
true,      // tooltips displayed
false );   // no URLs
      }
catch (SQLException sqlEx)
      {
// exception handling code . . .
      }
      
return barChart;
   }

上一个代码清单演示了创建三维条形图与创建二维条形图基本相同,只是 ChartFactory 类上调用的方法名不同。以下代码清单显示了如何将这个或任何其他生成的 JFreeChart 写出为 SVG 格式。

清单 10: 以 SVG 格式显示 JFreeChart 生成的图表

/**
* Write .svg file based on provided JFreeChart.
    * 
* @param aChart Chart to be written out as SVG.
* @param aFileName Name of file (without extension) to hold SVG XML.
* @param aWidth Width of image.
* @param aHeight Height of image.
    */
public void writeSvgBasedOnChart( JFreeChart aChart,
String aFileName,
int aWidth,
int aHeight )
   {
final String fileExtension = ".svg";
final String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
final DOMImplementation dom =
GenericDOMImplementation.getDOMImplementation();
org.w3c.dom.Document document = dom.createDocument(svgNS, "svg", null);
SVGGraphics2D svgGraphic = new SVGGraphics2D(document);
aChart.draw( svgGraphic, new java.awt.Rectangle(aWidth, aHeight) );
      
try
      {
boolean useCSS = true; // we want to use CSS style attributes
OutputStream outputStream =
new FileOutputStream(aFileName + fileExtension);
Writer output = new OutputStreamWriter(outputStream, "UTF-8");
svgGraphic.stream(output, useCSS);                                           
outputStream.flush();
outputStream.close();
      }
catch (IOException ioEx)
      {
System.err.println("Problem encountered trying to write SVG file: ");
ioEx.printStackTrace();
      }
   }

将三维条形图传给上面的方法以便写出 SVG 时,会将该条形图写入到所提供的文件名。生成的 SVG 文件将只是一个扩展名为 .svg 的文本文件,包含符合 SVG 的 XML 内容。可以用任何文本编辑器查看该生成文件中的 XML,但使用 Batik、Inkscape 或几乎是任何现代图形文件编辑器等工具查看 SVG 显示的图像,则更为有趣。实际上,可以在任何最新版本的 Firefox Web 浏览器中直接打开某个 .svg 文件来查看 SVG,因为它附带了一个内置的 SVG 查看器。此处显示的图形是 Batik 的 Squiggle 显示生成的 SVG 文件的快照。

图10:SVG 格式的三维水平条形图(由Batik Squiggle显示)

用 SVG 格式显示图表有几个好处,其中一个最明显的好处就是能够根据我们的需要放大图像且不会损失分辨率,这都多亏了 SVG 矢量图形的可伸缩性。其他好处包括使用 Inkscape 之类的工具或者甚至手动(如果需要的话)编辑生成的 SVG 来调整生成的图像也变得相对容易。


共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病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。