多个版本的统计图工具【Chart Tools】

简介:

最近项目中要使用数据统计柱状图和饼状图. 虽然Asp.net下也能实现Graphics画图并再次集成生成数据统计功能. 但总体感觉在美观度和简洁上总是达有点差强人意. 很粗糙.我花了一个小时时间做出功能. 但是美化于后台程序关联比较紧,基于程序上美化确一直难以下手.顺便再Codeporject和OpenSource上找到部分关于统计Chart第三方组件,.其中涉及到Javascript版本. 以及基于YUI2.0/3.0的Graphics组件,和部分的Flash版本,CSS版本等.统计中一般涉及到饼状图, 柱状图,分列散点图,线状图4中【常用模式】等各种样式,稍微看了下园子关于统计图表也有涉及, 鉴于此基础上我做了一个完善版本的在Asp.net中关于统计图表的使用组件,统计如下:

(A)GRaphael-JavaScript Charting Libray[JS版本]

Raphael是一个用来生成和简化网络上要实现矢量统计图的JavaScript库文件.Raphael JS版本文件大小只有20KB. 完整版本JS文件也只有137KB. 文件小. 同时支持浏览器: Firefox 3.0+[+号代表包含3.0在内更高版本], Safari 3.0+, Opera 9.5+,Internet Explorer 6.0+. 跨浏览器.Raphael是基于SVG W3c标准和VML作为基础来创建统计图形. 这意味着一个图形对象创建也是Dom对象. 用户可以页面自定义或附加JS事件流程来修改统计图. 小而精悍. 但是有一点就是Raphael提供统计图形比较少. 只有饼状图和柱状图 和散色图三种. 最基础统计样本. 在线效果如下.

Graphael饼状图: 

实现代码: 

 
  1. <html xmlns="http://www.w3.org/1999/xhtml"> 
  2.  <head runat="server"> 
  3.      <title></title> 
  4.  <script type="text/javascript" src="http://localhost:2620/raphael.js"></script> 
  5.  <script type="text/javascript" src="http://localhost:2620/g.raphael-min.js"></script> 
  6.  <script type="text/javascript" src="http://localhost:2620/g.pie-min.js"></script> 
  7.    
  8.  </head> 
  9.  <body> 
  10.      <form id="form1" runat="server"> 
  11.      <div> 
  12.        
  13.        <script type="text/javascript" charset="utf-8"> 
  14.            window.onload = function () {  
  15.                var r = Raphael("holder");  
  16.                r.g.txtattr.font = "12px 'Fontin Sans', Fontin-Sans, sans-serif";  
  17.    
  18.                r.g.text(320, 100, "陈凯个人博客访问统计").attr({ "font-size": 20 });  
  19.    
  20.                var pie = r.g.piechart(320, 240, 100, [55, 20, 13, 32, 5, 1, 2, 10], { legend: ["%%.%% – Chenkai's Blog", "IE Users-Chenkaiunion","陈凯博客","Silverlight-银光技术","德国柏林","北京"], legendpos: "west" });  
  21.                pie.hover(function () {  
  22.                    this.sector.stop();  
  23.                    this.sector.scale(1.1, 1.1, this.cx, this.cy);  
  24.                    if (this.label) {  
  25.                        this.label[0].stop();  
  26.                        this.label[0].scale(1.5);  
  27.                        this.label[1].attr({ "font-weight": 800 });  
  28.                    }  
  29.                }, function () {  
  30.                    this.sector.animate({ scale: [1, 1, this.cx, this.cy] }, 500, "bounce");  
  31.                    if (this.label) {  
  32.                        this.label[0].animate({ scale: 1 }, 500, "bounce");  
  33.                        this.label[1].attr({ "font-weight": 400 });  
  34.                    }  
  35.                });  
  36.    
  37.            };  
  38.          </script> 
  39.            
  40.          <div id="holder"></div> 
  41.      </div> 
  42.      </form> 
  43.  </body> 
  44.  </html> 

柱状图不在演示. 请参考官方版本.

演示地址:Graphic demo.

下载地址:Graphic Dowload

(B)DHTML / CSS based bar graph[CSS版本]

这个Graph完全是基于Html和CSS的. 统计数据时页面下载速度快. 成图背景可以用户自定义调整. 而且有一点是开源的. 生成的柱状图.饼状图 现状图.[有点少]都是基于一个JavaScript支持库文件.在线生成效果截图如下:

实现代码:

 
  1. <!-- graph code begins here-->  
  2.  <script type="text/javascript" src="js/wz_jsgraphics.js"></script>  
  3.  <script type="text/javascript" src="js/graph.js"></script>  
  4.     
  5.  <div id="myCanvas" style="overflow: auto; position:relative;height:300px;width:400px;"></div>  
  6.  <!-- graph code begins here-->  
  7.  <script type="text/javascript" src="js/wz_jsgraphics.js"></script>  
  8.  <script type="text/javascript" src="js/graph.js"></script>  
  9.     
  10.  <div id="myCanvas" style="overflow: auto; position:relative;height:300px;width:400px;"></div>  
  11.    
  12.  <script>   
  13.  var g = new graph();  
  14.     
  15.  //for small values < 5, use a scale of 10x and for values < 1, use 100x  
  16.  //g.setScale(10);  
  17.     
  18.  g.add('01<br>Jan', 145);  
  19.  g.add('2', 0);  
  20.  g.add('3', 50);  
  21.  g.add('4', 130);  
  22.  g.add('5', 117);  
  23.  g.add('6', 175);  
  24.  g.add('7', 205);  
  25.  g.add('8', 125);  
  26.  g.add('9', 125);  
  27.  g.add('10', 135);  
  28.  g.add('11', 125);  
  29.     
  30.  //If called without a height parameter, defaults to 250  
  31.  //g.render("myCanvas", "test graph");  
  32.     
  33.  g.render("myCanvas""test graph", 250);  
  34.  </script>  
  35.  <!-- graph code ends here--> 

演示地址:Graphic Bar DEMO

下载地址:Graphic Bar Download

(C)Rich Chart Graphic[基于.NET增强版]

上面我介绍了两个. 开源的一个JS和CSS版本供参考. 后来参考多方Chart统计图表 最终我在项目中使用的Rich Chart Graphic.先不做介绍我们看看截图效果:

基本能够满足你统计数据中全部需求. 其中还包含现代财务统计中3D成图. 报表服务等. 这个Rich Chart是一个产品级别. 我在使用最大感受是: Rich Chart 对数据集成和操作使用相比以上CSS版本和JS版本的容易操作得多.  支持Database, XML和其他数据源等.强悍吧. 例如我在利用YUI2.0版本生成统计图表中, 设计数据操作时Json格式. Database生成JSon中间只要加一个转换操作类即可. 但问题是. 通过Jquery动态控制页面的Json数据. 每次都要动态修改. JS中面向对象操作估计对不熟悉JS的C# 或VB后台程序员是非常痛苦一件事.  而且极易容易报错.

另外一个很关键的是.往往YUI2.0和其他第三方页面插件.定制的统计图格式单一. 对用户自定义生成统计图 余地很有限. 如果你想实现自定义那么你的工作就转移为重新修改JS底层库或新建JS成图库. 其实从0做起了.崩溃吧.

其实我们关心的是像操作。NEt控件方式一样来在编程中实现我们熟悉后台编码来操作生成统计图. 而Rich Chart恰恰符合这个特点.

利用Rich Chart实现一个柱状图.[注意生成为一个Flash文件现在页面中].在线生成:

实现编码C# in JS :

 
  1. <%@ Page language="c#"%> 
  2. <%@ Import Namespace="RichChart"%> 
  3. <% 
  4. // browsers should not cache this movie: 
  5. Response.Expires = -1; 
  6.  
  7. // create the RichChart object: 
  8. RichChart rc = new RichChart(); 
  9.  
  10. // load chart template: 
  11. rc.LoadTemplate("template.rcp"); 
  12.  
  13. // load data values
  14. rc.LoadData("data.txt"); 
  15.  
  16. // set series titles: 
  17. rc.Series.Titles="First Round, Final Round"
  18.  
  19. // finally generate the chart: 
  20. rc.Generate(); 
  21.  
  22. %> 

生成步骤如下: 先加载Rich Chart中统计图模板. 在加载数据值[Database 或XML格式数据 或文本数据等]. 保存图表项目名称. 生成一个。SWF格式的文件. 在服务器端.

如果你下载官方的Rich Chart Server一个Exe文件到本地编辑. 其中集成的数据编辑. 多个统计模板选择. 因为Blue Pacific做的是一个产品 免费已经够用. 其他详细说明.参见官方

演示地址:Rich Chart Demo

(D)Google API Chart Graphic

关于Google的APIs,大家都可以在http://code.google.com/apis.html上看到,最后为什么提到谷歌的API.? 因为最近在做Google地图中做成像时,是以Google地图作为底层开发的. 当让也少不了了解GoogleAPI文档. 其中最近看的中文版中<<程序天下Google API开发详解>>这本书基本还不错对GoogleAPI解析相当到位. Google API开发开放服务供开发者使用. 当然其中包括Google Api Chart Graphic.统计图表使用. 当然YUI 2.0有些Chart 也是相当不错. 如果有时间你也可以研究一下. Google Chart Graphic. 使用很简单.

Google chart统计主要分为两种一种是Image Chart和Interactive Charts[交互式]. 即一个非动态图片Chart和动态提示Chart.

看看Image Chart:

在看看Interactive Charts:

上面只是用一个饼状图做了一个实例演示. Google Api 中还包含了其他的具有特色的Chart 例如Area Chart和Geo Map都很有Google的特色.

常用的有Line Chart ,Bar Chart, column Chart等. 详见Google API ChartTools 

其中关于Google API中Chart使用代码 我不在赘述. 官方的API文档资料还是非常不错的。提供参考资料如下:

Google API ChartTools;

All Google ChartTools;

如上我只是提出我在参考使用大量Chart比较有特点几个. 其他的Chart轻量型组件过一段我回整理一个完整版本. 发布上来, 由于临时写的匆忙.,其中难免有纰漏 网大家指正. 如有疑问请及时联系我

 


本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/765096


相关文章
|
4月前
|
数据可视化 图形学 C++
C++ Qt开发:Charts绘图组件概述
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍`QCharts`二维绘图组件的常用方法及灵活运用。Qt Charts 提供了一个强大且易于使用的工具集,用于在 Qt 应用程序中创建各种类型的图表和图形可视化,该模块提供了多种类型的图表,包括折线图、散点图、条形图、饼图等。这使得开发人员能够轻松地将数据以直观的方式呈现给用户,增强应用程序的可视化效果。
48 0
C++ Qt开发:Charts绘图组件概述
|
4月前
|
定位技术
ArcGIS中各版本ArcMap安装OpenStreetMap编辑工具集插件ArcGIS Editor for OSM
ArcGIS中各版本ArcMap安装OpenStreetMap编辑工具集插件ArcGIS Editor for OSM
|
6月前
|
计算机视觉 开发者 C++
实用分享-Visual Studio图像查看插件(Image Watch)
实用分享-Visual Studio图像查看插件(Image Watch)
103 0
|
9月前
|
前端开发 API Kotlin
Jetpack compose使用ImageVector绘制自定义图标
Jetpack compose绘制图标的方式比较有趣,得益于kotlin神奇的语法,不需要像flutter那样定义一个icons.dart的类集中管理所有的图标,而是各就其位,散装定义,来尝试一下吧
283 0
Jetpack compose使用ImageVector绘制自定义图标
|
编解码 iOS开发 异构计算
Alien Skin Exposure2022最新版安装激活教程
Exposure 结合了专业级的照片调整,庞大的华丽照片外观库以及高效的设计,使其使用起来很愉悦。新的自动调整功能可简化您的工作流程,并使用户进入创意区。
392 0
|
数据可视化 IDE 开发工具
OpenCV可视化界面插件Image Watch(支持VS2012-VS2019)
OpenCV可视化界面插件Image Watch(支持VS2012-VS2019)
652 0
|
JSON Kubernetes Go
Helm chart指南-系列(3)- Chart开发Tips和Tricks
本指南涵盖了Helm chart开发人员在构建生产级质量的chart时学到的一些提示和技巧。 我在网址 https://whmzsu.github.io/helm-doc-zh-cn/ 不断更新,同时也会搬运到这里,大家有兴趣加入https://github.com/whmzsu/helm-doc-zh-cn/的可以给我提交意见和建议。
2131 0
|
存储 容器 Kubernetes
Helm chart指南-系列(5)- 同步chart库
同步chart库 注意:这个样例适用于于提供chart库的Google Cloud Storage(GCS)存储bucket。 前提条件 安装gsutil 工具。这个样例依赖于gsutil rsync功能。
1378 0
|
关系型数据库 测试技术 容器
Helm chart指南-系列(7)- chart测试
Chart测试 一个chart包含许多一起工作的Kubernetes资源和组件。作为chart作者,可能需要编写一些测试来验证chart在安装时是否按预期工作。这些测试还有助于chart消费者了解chart应该做什么。
1802 0
|
存储 Kubernetes 应用服务中间件
Helm chart指南-系列(4)- Chart Repository 存储库指南
本节介绍如何创建和使用Helm chart repo。在高层次上,chart库是可以存储和共享打包chart的位置。 官方chart库由Kubernetes Charts维护 ,我们欢迎参与贡献。Helm还可以轻松创建和运行自己的chart库。
2264 0