RGraph-基于HTML5的 JavaScript 动态仪表盘

目前针对于统计图的制作方法有很多,可以直接利用快逸报表中的自带统计图,还可以通过自定义统计图个性化定制,当然除此之外,在新的HTML5标准中,新增了一个非常重要的元素—canvas元素。使用该元素,可以在页面中直接进行各种复杂图形的制作。因此,如果使用该元素绘制统计图,比之前使用服务器端控件来生成统计图的方法更加具有优越性,因为使用了该元素之后,绘制统计图的工作是直接在客户端进行的,而不再是在服务器端所完成的了。这不仅意味着不再占用服务器端的资源,而且意味着可以直接利用客户端计算机的强大资源,绘制统计图的速度也就可以大大地得到提高了。而且,因为用来控制canvas图形绘制的脚本代码是可以被压缩的(例如,当你使用Apache服务器的时候,mod_gzip将自动帮你执行代码压缩工作),可以被缓存的,所以也就可以大幅度地减少带宽的占用了。本文就介绍了这样一款制作统计图的插件。设想一下,假如由于客户端的访问,服务器端每天需要创建100,000幅统计图,这对服务器端来说,无疑是一个非常巨大的资源占用。
本文介绍一款名叫Rgraph的插件,使用RGraph统计图制作插件的话,可以将这个资源占用减少到接近零的程度,因为所有创建统计图的工作都是在客户端完成的,就像渲染HTML网页一样,服务器端只负责发送数据,不再负责统计图的生成与发送了,同时带宽的占用情况也大大得到了改善。
另外,由于统计图是依靠JavaScript来生成的,所以当你查看这个显示统计图的HTML网页的时候,该网页是可以为离线状态的了。
对于浏览器来说,目前该插件受到了Firebox 4,Google Chrome 10,Opera 11,Safari 5、IE9浏览器的支持。

官网网站为:http://www.rgraph.net/examples/index.html !

 

我今天就做关于仪表盘的实现,三个仪表盘,不同样式而已!效果如下:

 

你可以设置头内容如 :java小强 这个标题的内容和样式,也可以设置底部的内容和样式,如:cuisuqiang@163.com !

第一次和第三个创建时:

Java代码    收藏代码
  1. var gauge1 = new RGraph.Gauge('cvs1'010084);  
  2. var gauge3 = new RGraph.Gauge('cvs3', -10010084);  

 

绘图的地址,最小值,最大值和当前值,第二个参数有点不同:

Java代码    收藏代码
  1. var gauge2 = new RGraph.Gauge('cvs2'0200, [184,12]);  

 

由于他是两个指针,所以当前值参数是一个数组。

那么有的人说了,那我想画三个指针怎么办,很简单,传三个参数!

 

我们整个页面的源码给大家看一下,运行后就是上面的效果:

Html代码    收藏代码
  1. <html>  
  2. <head>  
  3.     <title>Examples of the Gauge chart</title>  
  4.     <script src="RGraph.common.core.js" ></script>  
  5.     <script src="RGraph.common.effects.js" ></script>  
  6.     <script src="RGraph.common.dynamic.js" ></script>  
  7.     <script src="RGraph.gauge.js" ></script>  
  8.     <script src="excanvas.js"></script>  
  9.     <script>  
  10.         window.onload = function () {             
  11.             var gauge1 = new RGraph.Gauge('cvs1', 0, 100, 84);  
  12.             gauge1.Set('chart.scale.decimals', 0);  
  13.             gauge1.Set('chart.tickmarks.small', 50);  
  14.             gauge1.Set('chart.tickmarks.big',5);  
  15.             gauge1.Set('chart.title.top', 'Java小强');  
  16.             gauge1.Set('chart.title.top.size', 24);  
  17.             gauge1.Set('chart.title.bottom', 'cuisuqiang@163.com');  
  18.             gauge1.Set('chart.title.bottom.color', '#aaa');  
  19.             gauge1.Draw();              
  20.             function Updategauge () {  
  21.                 gauge1.value=RGraph.random(5,90);  
  22.                 RGraph.Effects.Gauge.Grow(gauge1);  
  23.                 setTimeout(Updategauge, 2000);  
  24.             }  
  25.             Updategauge();  
  26.             var gauge2 = new RGraph.Gauge('cvs2', 0, 200, [184,12,58]);  
  27.             gauge2.Set('chart.title.top', 'Java小强');  
  28.             gauge2.Set('chart.title.bottom.size', 'Italic 14'); // Hmmmm  
  29.             gauge2.Set('chart.title.bottom.font', 'Impact');  
  30.             gauge2.Set('chart.title.bottom.color', '#ccc');  
  31.             gauge2.Set('chart.title.bottom', 'cuisuqiang@163.com');  
  32.             gauge2.Set('chart.title.bottom.pos', 0.4);  
  33.             gauge2.Set('chart.background.color', 'black');  
  34.             gauge2.Set('chart.background.gradient', true);  
  35.             gauge2.Set('chart.centerpin.color', '#666');  
  36.             gauge2.Set('chart.needle.colors', [RGraph.RadialGradient(gauge2, 125, 125, 0, 125, 125, 25, 'transparent', 'white'),  
  37.                                                RGraph.RadialGradient(gauge2, 125, 125, 0, 125, 125, 25, 'transparent', '#d66')]);  
  38.             gauge2.Set('chart.needle.size', [null, 50]);  
  39.             gauge2.Set('chart.text.color', 'white');  
  40.             gauge2.Set('chart.tickmarks.big.color', 'white');  
  41.             gauge2.Set('chart.tickmarks.medium.color', 'white');  
  42.             gauge2.Set('chart.tickmarks.small.color', 'white');  
  43.             gauge2.Set('chart.border.outer', '#666');  
  44.             gauge2.Set('chart.border.inner', '#333');  
  45.             gauge2.Set('chart.colors.ranges', []);  
  46.             gauge2.Draw();              
  47.             function Updategauge2 () {  
  48.                 gauge2.value = [RGraph.random(2,190), RGraph.random(5,195), RGraph.random(5,195)]  
  49.                 RGraph.Effects.Gauge.Grow(gauge2);  
  50.                 setTimeout(Updategauge2, 2000);  
  51.             }  
  52.             Updategauge2();  
  53.             var gauge3 = new RGraph.Gauge('cvs3', -100, 100, 84);  
  54.             gauge3.Set('chart.scale.decimals', 0);  
  55.             gauge3.Set('chart.tickmarks.small', 50);  
  56.             gauge3.Set('chart.tickmarks.big',5);  
  57.             gauge3.Set('chart.title.top', 'Java小强');  
  58.             gauge3.Set('chart.title.top.size', 24);  
  59.             gauge3.Set('chart.title.bottom', 'cuisuqiang@163.com');  
  60.             gauge3.Set('chart.title.bottom.color', '#aaa');  
  61.             gauge3.Set('chart.colors.ranges', [[-100, -90, 'red'], [-90, -80, 'yellow'], [80, 90, 'yellow'], [90, 100, 'red']]);  
  62.             gauge3.Set('chart.adjustable', true);  
  63.             gauge3.Draw();  
  64.             function Updategauge3 () {  
  65.                 gauge3.value = RGraph.random(2,99);  
  66.                 RGraph.Effects.Gauge.Grow(gauge3);  
  67.                 setTimeout(Updategauge3, 2000);  
  68.             }  
  69.             Updategauge3();           
  70.         }  
  71.     </script>  
  72. </head>  
  73. <body>  
  74.     <div style="text-align: center">  
  75.         <canvas id="cvs1" width="250" height="250">[No canvas support]</canvas>  
  76.         <canvas id="cvs2" width="250" height="250">[No canvas support]</canvas>  
  77.         <canvas id="cvs3" width="250" height="250">[No canvas support]</canvas>  
  78.     </div>  
  79. </body>  
  80. </html>  

 

你最好用Firebox 看,使用IE也能看到效果,但是一旦进行动态更新指针的时候,就会把浏览器给搞死!

<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值