• 多个版本的统计图工具【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(320100"陈凯个人博客访问统计").attr({ "font-size"20 });
    19 

    20               var pie = r.g.piechart(320240100, [5520133251210], { legend: ["%%.%% – Chenkai's Blog""IE Users-Chenkaiunion","陈凯博客","Silverlight-银光技术","德国柏林","北京"], legendpos: "west" });
    21               pie.hover(function
     () {
    22                   this
    .sector.stop();
    23                   this.sector.scale(1.11.1this.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: [11this.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;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;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  1 <%@ Page language="c#"%>
     2  2 <%@ Import Namespace="RichChart"%>
     3  3 <%
     4  4 // browsers should not cache this movie:
     5  5 Response.Expires = -1;
     6  6
     
     7  7 // create the RichChart object:

     8  8 RichChart rc = new RichChart();
     9  9
     
    10 10 // load chart template:

    11 11 rc.LoadTemplate("template.rcp");
    12 12
     
    13 13 // load data values:

    14 14 rc.LoadData("data.txt");
    15 15
     
    16 16 // set series titles:

    17 17 rc.Series.Titles="First Round, Final Round";
    18 18
     
    19 19 // finally generate the chart:

    20 20 rc.Generate();
    21 21
     
    22 22 %>
    23 

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

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

    演示地址:Rich Chart Demo

    (D)Google API Chart Graphic

    关于GoogleAPIs,大家都可以在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轻量型组件过一段我回整理一个完整版本. 发布上来, 由于临时写的匆忙.,其中难免有纰漏 网大家指正. 如有疑问请及时联系我.

  • 相关阅读:
    iOS,Android,WP, .NET通用AES加密算法
    iOS开发笔记-图标和图片大小官方最新标准
    因为对 Docker 不熟悉建了 N 多个 Nginx
    Docker 学习笔记 2019-05-27
    Linux Mint 19.1 安装 Docker 过程笔记
    W600 一块新的 KiCad PCB
    KiCad Mark 点名称
    一次乙型流感记录(2019-05-24)
    为什么不喜欢在 QQ 群里回答问题?
    Git 的两种忽略文件方式 gitignore 和 exclude
  • 原文地址:https://www.cnblogs.com/chenkai/p/1690144.html
Copyright © 2020-2023  润新知