`
flysky
  • 浏览: 65327 次
社区版块
存档分类
最新评论

ChartDirector与JFreeChart两款主要web图表工具调研报告

阅读更多
一、引言:
单位安排让调研报表工具选择一款,让学习和比较ChartDirector与Jasperreports,掌握技术路径,即掌握安装配置方式,接口,调用方法,例子等。
于是,下载了ChartDirector,挺简单的,照着提供的jsp的例子,改一下数据、横坐标内容就马上能运行了,提供的函数命名也很规范,一看大概就知道用途,挺好理解的,生成的图表也很漂亮。
于是,下载Jasperreports,这个东东要跑起来还真有点麻烦,首先得了解一下ANT,ant不难,但是为了运行一下示例还是被它拉路了一小会,然后是jdk版本兼容问题,然后是数据源的连接问题,折腾了一个星期,总会把它的示例都跑起来了,同时也写了三份学习笔记。接着了解了一下它的可视化设计工具ireports。总的感觉这个东西不如ChartDirector方便好用。
接着,跟莫sir讨论一下,发现自己犯了一个很严重的概念性错误。那就是,图表和报表是不同的!图表是指图片,即柱状图,折线图,饼图等,选择图表工具主要关注的是图表是否漂亮;而报表是指表格形式的表,如财务报表等,选择报表工具主要关注的是能否解决中国报表表头复杂,交叉报表等问题。ChartDirector是图形报表工具;而Jasperreports是报表工具,生成图表底层用的是JreeChart。所以,应该比较的是ChartDirector与JreeChart,而不是ChartDirector与Jasperreports的比较。
下面主要介绍和比较ChartDirector与JreeChart这两款web图形报表工具。

二、 ChartDirector与JreeChart的介绍与比较
2.1 官方网址
ChartDirector:  http://www.advsofteng.com/
JreeChart:  http://www.jfree.org/jfreechart/index.html
2.2 基本介绍
两款都是流行的web图表工具;
ChartDirector: 
ChartDirector is a fast and powerful charting component for creating professional and clickable charts. It's innovative ChartDirector Mark Up Language, flexible object oriented API, layering architecture and advanced coloring system provide unprecedent chart design, formatting and customization capabilities to developers. Supports numerous chart types - Pie, donut, bar, line, spline, step line, trend line, curve-fitting, inter-line coloring, area, scatter, bubble, floating box, box-whisker, waterfall, finance (numerous indicators support), gantt, vector, radar, polar, rose, angular and linear meters and guages. ChartDirector is 100% pure Java code and is suitable for both client and server side usage. Specially designed graphics subsystem allows ChartDirector to run on headless servers without requiring headless support. Includes SWING controls to support client side applications. Easy to use and with comprehensive documentation. Come with numerous examples.

JreeChart:
JFreeChart是一个开源的 JAVA 项目,它主要用来开发各种各样的图表,这些图表包括:饼图、柱状图 ( 普通柱状图以及堆栈柱状图 ) 、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。在这些不同式样的图表上可以满足目前商业系统的要求。 JFreeChart 是一种基于 JAVA 语言的图表开发技术。 JFreeChart 可用于 Servlet 、 JSP 、 Applet 、 Java Appication 环境中,通过 JDBC 可动态显示任何数据库数据,结合 Itext 可以输出至 PDF 文件。

2.3 收费情况
ChartDirector:  商业;价格根据使用权限不同在59美元到749美元之间;也可以免费使用,只是在画出来的图形下面都有一条它的广告条。网上有破解方法,破解后图形下面不再出现它的广告条。

JreeChart:      开源;但是文档要花钱买,40美元;

2.4 支持语言
ChartDirector:  支持很多种语言,例如.NET, Java, ASP, COM,VB, PHP, Perl, Python,Ruby, ColdFusion, C++等;
JreeChart:      Java;

2.5 图表比较
ChartDirector:  图表特别精细,漂亮;
样例库:http://www.advsofteng.com/gallery.html


JreeChart:      画出来的图形不够精细,看起来有些模糊;图表的文字边缘、颜色和颜色的分界也比较模糊。
样例库:http://www.jfree.org/jfreechart/samples.html


2.6 对中文问题支持的比较
ChartDirector:  中文的问题,比较容易解决。
JreeChart:      虽然有字体的解决办法,但仍然存在问题。他使用的默认字体显示出来的中文会很模糊,你可能需要修改源代码。

2.7 开发使用易用性比较
从自己分别使用它们用jsp显示柱状图的例子来看,两者的开发的易用性差不多,都是设置一下数据、横坐标等就可以了。

三、 分别用ChartDirector和JFreeChart画柱状图的JSP程序示例
3.1 用ChartDirector在JSP中画统计图
      下面是一个柱状图的例子:
       图1 ChartDirector.jpg(很清晰的那个图)
(还不会贴图,只能以附件形式上传了,但是不能排版,只能显示在文章后面。唉,谁要是解决了blog的图片上传问题也是一大创新啊)
      范例程序:
<%@page import="ChartDirector.*" %>
<%
//The data for the bar chart
  double[] data = {85, 156, 179.5, 211, 123};

//The labels for the bar chart
  String[] labels = {"Mon", "Tue", "Wed", "Thu", "Fri"};

//Create a XYChart object of size 300 x 280 pixels
XYChart c = new XYChart(300, 280);

//Set the plotarea at (45, 30) and of size 200 x 200 pixels
c.setPlotArea(45, 30, 200, 200);

//Add a title to the chart
c.addTitle("Weekly Server Load");

//Add a title to the y axis
c.yAxis().setTitle("MBytes");

//Add a title to the x axis
c.xAxis().setTitle("Work Week 25");

//Add a bar chart layer with green (0x00ff00) bars using the given data
c.addBarLayer(data, 0xff00).set3D();

//Set the labels on the x axis.
c.xAxis().setLabels(labels);

//output the chart
String chart1URL = c.makeSession(request, "chart1");

//include tool tip for the chart
String imageMap1 = c.getHTMLImageMap("", "", "title='{xLabel}: {value} MBytes'")
     ;
%>
<html>
<body topmargin="5" leftmargin="5" rightmargin="0">
<div style="font-size:18pt; font-family:verdana; font-weight:bold">
     3D Bar Chart
</div>
<hr color="#000080">
<a href="viewsource.jsp?file=<%=request.getServletPath()%>">
     <font size="2" face="Verdana">View Chart Source Code</font>
</a>
</div>
<br>
<img src='<%=response.encodeURL("getchart.jsp?"+chart1URL)%>'
     usemap="#map1" border="0">
<map name="map1"><%=imageMap1%></map>
</body>
</html>


3.2 用JFreeChart画柱状图的范例

这个范例说明如何用JFreeChart画简单的柱状图,下面是一个JSP的简单范例:
<%@ page contentType="text/html; charset=GB2312" %>
<%@ page import="java.awt.*, java.text.*, java.util.*" %>
<%@ page import="org.jfree.chart.*" %>
<%@ page import="org.jfree.chart.axis.*" %>
<%@ page import="org.jfree.chart.labels.StandardCategoryItemLabelGenerator" %>
<%@ page import="org.jfree.chart.plot.*" %>
<%@ page import="org.jfree.chart.renderer.*" %>
<%@ page import="org.jfree.chart.servlet.ServletUtilities" %>
<%@ page import="org.jfree.data.DefaultCategoryDataset" %>
<%@ page import="org.jfree.ui.TextAnchor" %>

<%
   //The data for the bar chart
    double[] data = {85, 156, 179.5, 211, 123};
   //The labels for the bar chart
    String[] labels = {"Mon", "Tue", "Wed", "Thu", "Fri"};
  
   DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    for (int i = 0; i < data.length; i++) {
     dataset.addValue(data[i], null, labels[i]);
   }
  
   JFreeChart chart = ChartFactory.createBarChart3D("Weekly Server Load", "Work Week 25", "MBytes", dataset, PlotOrientation.VERTICAL, false, false, false);
   chart.setBackgroundPaint(new Color(0xE1E1E1));
  
   CategoryPlot plot = chart.getCategoryPlot();
  
   // 设置Y轴显示整数
   NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
   rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
  
   CategoryAxis domainAxis = plot.getDomainAxis();
   //设置距离图片左端距离
   domainAxis.setLowerMargin(0.05);
  
   BarRenderer3D renderer = new BarRenderer3D();
   //设置柱的颜色
   renderer.setSeriesPaint(0, new Color(0xff00));
   plot.setRenderer(renderer);
  
   String filename = ServletUtilities.saveChartAsPNG(chart, 300, 280, null, session);
   String graphURL = request.getContextPath() + "/displayChart?filename=" + filename;
%>
<html>
<body topmargin="5" leftmargin="5" rightmargin="0">
<div style="font-size:18pt; font-family:verdana; font-weight:bold">
     3D Bar Chart
</div>
<br>
<img src="<%= graphURL %>" border=0>
</body>
</html>

画出来的图:
图2 JFreeChart.jpg(有点模糊的那个图)

和ChartDirector画出来的图做一个比较:
图1 ChartDirector.jpg (很清晰的那个图)

四、 web图表工具选择
了解了关键的两款web图表工具ChartDirector与JreeChart之后,我们应该选择哪一个报表工具呢?下面是本人提供的参考方案:
ChartDirector:图片精细漂亮,如果舍得花钱购买,建议使用这款;
JreeChart:图片不够清晰有些模糊,如果只考虑免费工具,建议使用这款;

五、 参考资料
1. http://www.advsofteng.com/
2. http://www.jfree.org/jfreechart/index.html
3. ChartDirector (Java Edition)
http://nuclearscripts.com/java/jsp-and-servlets/graphs-and-charts/chartdirector-java-edition.html
4. JFreeChat的介绍http://www.blogjava.net/chunkyo/archive/2007/01/13/jfreechat.html
5. 用JFreeChart画柱状图的范例
用ChartDirector在JSP中画统计图
http://www.blogjava.net/georgehill/default.html?page=3
6. 一个很棒的WEB图表项目——ChartDirector
http://www.dlog.cn/html/diary/showlog.vm?sid=2&cat_id=-1&log_id=413
7. ChartDirector与JFreeChart
http://blog.csdn.net/keelsike/archive/2006/05/30/762869.aspx

[size=18][/size]
  • 大小: 33.9 KB
  • 大小: 32.5 KB
分享到:
评论
1 楼 无缝SKDF 2013-02-25  
ChartDirector其实既可以成为web图表,也可以说是Activex图表,推荐看一看三个ActiveX图表控件的优势分析:http://www.cnblogs.com/flashcharts/archive/2013/02/19/2917259.html

相关推荐

    支持java,js画图的工具ChartDirector

    ChartDirector是一款强大的图形绘制工具,它为Java和JavaScript开发者提供了丰富的图表制作功能。这款工具以其卓越的性能、直观的API和精美的图表效果而受到广大开发者的青睐。下面将详细介绍ChartDirector在Java和...

    ChartDirector

    ChartDirector是一款强大的图表生成库,尤其适用于JAVA开发者。它提供了丰富的图表类型,包括柱状图、线形图、饼图、散点图、热力图等,能够满足各种数据分析和可视化的需求。ChartDirector不仅支持静态图表的生成,...

    ChartDirector 6.0.rar

    它的主要功能是帮助开发者快速创建高质量、专业的图表,适用于数据分析、报告制作、Web应用等多种场景。ChartDirector 6.0作为其最新版本,带来了诸多增强和改进,包括对32位和64位操作系统的全面支持,以满足不同...

    ChartDirector开发文档和例子

    ChartDirector是一款强大的图表生成库,广泛应用于各类软件和Web应用中,用于创建高质量的数据可视化效果。这个开发文档和示例集合提供了丰富的资源,帮助开发者快速掌握ChartDirector的使用方法。 一、...

    chartdirector5中文文档.rar

    ChartDirector 5是一款强大的图表库,专为程序员设计,用于在各种应用程序中创建高质量的2D和3D图表。这个中文文档集包含了详尽的指南和教程,帮助开发者充分利用ChartDirector的功能。以下是对ChartDirector 5中文...

    chartDirector中文使用文档

    ChartDirector是一款强大的报表和图表制作工具,尤其适合于在IT行业中进行数据可视化。这款软件以其易用性和丰富功能,深受用户喜爱。以下是对ChartDirector及其使用的一些关键知识点的详细解释。 1. **基本概念** ...

    ChartDirector图表样式示例

    ChartDirector图表样式示例,主要介绍了ChartDirector图表的制作。

    chartdirector for java v7.0完美版

    ChartDirector是一款强大且全面的商业图表制作工具,专为Java开发者设计。它提供了丰富的图表组件库,使得开发人员能够轻松地在Java应用程序中创建高质量、交互式的图表。ChartDirector的V7.0版本是其发展历程中的一...

    chartdirector for C++ 64位。

    ChartDirector是一款强大的图表生成库,特别为C++开发者设计,以提供64位系统的支持。这个库使得在C++应用程序中创建高质量、交互式的图表变得简单。以下是对ChartDirector for C++ 64位的详细解释和相关知识点: 1...

    chartdirector

    总结来说,ChartDirector是一款功能强大的图表制作工具,它的C++版本特别适合需要在Windows平台上进行图形化开发的程序员。通过其丰富的图表类型、强大的自定义功能和交互性,开发者可以快速构建出高质量的可视化...

    ChartDirector program manual for Java

    ChartDirector是一款强大的图表制作工具,它提供了丰富的图表类型和自定义选项,使得开发者能够轻松地在应用程序中集成高质量的图表。手册包含两大部分:语法解释和实例演示,以CHM(Microsoft Compiled HTML Help)...

    ChartDirector图表 ActiveX版 5.1.1正版

    ChartDirector 图表 ActiveX版,32位,有正版序列号,5.1.1 是最后的一个可用的5.X正版,运行非常稳定,没有BUG.可以在VB和ASP网页中使用.英文版,官方没有中文版. 非常漂亮的图表控件比TeeChart强很多.

    ChartDirector实例

    ChartDirector是一款强大的图表生成库,广泛应用于各类软件和网页中,用于创建高质量的数据可视化效果。在"ChartDirector实例"这个主题中,我们可以深入探讨ChartDirector的多种图表类型、使用方法以及如何通过它来...

    ChartDirector.rar

    ChartDirector是一款强大的图表库,适用于开发人员在各种应用程序中创建高质量、交互式的统计图形。它支持多种编程语言,包括.NET、ActiveX、PHP、Java等,使得开发者可以在不同的平台上利用其功能。本压缩包...

    ChartDirector5.1

    ChartDirector是一款强大的图表库,广泛应用于开发人员在创建数据可视化应用程序时。它的版本5.1提供了对多种编程语言的支持,包括C++,使得开发者能够利用这个库在32位环境中构建具有高质量图表的应用程序。...

    ChartDirector for java 5.0注册码

    ChartDirector是一款强大的图表组件,它为开发者提供了丰富的图表类型和高度定制的能力,帮助他们在应用程序中创建各种高质量的图表。 ChartDirector的主要特点包括: 1. **多平台支持**:ChartDirector支持多种...

    chartDirector官方资源(含文档,jar包等)

    ChartDirector是一款强大的图表生成库,广泛应用于各类软件项目中,为用户提供高质量的2D和3D图表。这个压缩包包含了ChartDirector的官方资源,包括文档、jar包以及演示示例,便于开发者理解和使用该库。 1. **...

    chartdirector 5.1

    总的来说,ChartDirector 5.1 for .NET 是一款强大的图表组件,为.NET开发者提供了高效、灵活的图表解决方案,无论是在商业报表、数据分析还是科学可视化领域都有广泛的应用。通过深入学习和实践,开发者可以利用它...

Global site tag (gtag.js) - Google Analytics