`
cuisuqiang
  • 浏览: 3960249 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3670084
社区版块
存档分类
最新评论

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

    博客分类:
  • JS
阅读更多

目前针对于统计图的制作方法有很多,可以直接利用快逸报表中的自带统计图,还可以通过自定义统计图个性化定制,当然除此之外,在新的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

第一次和第三个创建时:

var gauge1 = new RGraph.Gauge('cvs1', 0, 100, 84);
var gauge3 = new RGraph.Gauge('cvs3', -100, 100, 84);

 

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

var gauge2 = new RGraph.Gauge('cvs2', 0, 200, [184,12]);

 

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

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

 

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

<html>
<head>
    <title>Examples of the Gauge chart</title>
    <script src="RGraph.common.core.js" ></script>
    <script src="RGraph.common.effects.js" ></script>
    <script src="RGraph.common.dynamic.js" ></script>
    <script src="RGraph.gauge.js" ></script>
    <script src="excanvas.js"></script>
    <script>
        window.onload = function () {			
            var gauge1 = new RGraph.Gauge('cvs1', 0, 100, 84);
            gauge1.Set('chart.scale.decimals', 0);
            gauge1.Set('chart.tickmarks.small', 50);
            gauge1.Set('chart.tickmarks.big',5);
            gauge1.Set('chart.title.top', 'Java小强');
            gauge1.Set('chart.title.top.size', 24);
            gauge1.Set('chart.title.bottom', 'cuisuqiang@163.com');
            gauge1.Set('chart.title.bottom.color', '#aaa');
            gauge1.Draw();            
			function Updategauge () {
				gauge1.value=RGraph.random(5,90);
				RGraph.Effects.Gauge.Grow(gauge1);
				setTimeout(Updategauge, 2000);
			}
			Updategauge();
            var gauge2 = new RGraph.Gauge('cvs2', 0, 200, [184,12,58]);
            gauge2.Set('chart.title.top', 'Java小强');
            gauge2.Set('chart.title.bottom.size', 'Italic 14'); // Hmmmm
            gauge2.Set('chart.title.bottom.font', 'Impact');
            gauge2.Set('chart.title.bottom.color', '#ccc');
            gauge2.Set('chart.title.bottom', 'cuisuqiang@163.com');
            gauge2.Set('chart.title.bottom.pos', 0.4);
            gauge2.Set('chart.background.color', 'black');
            gauge2.Set('chart.background.gradient', true);
            gauge2.Set('chart.centerpin.color', '#666');
            gauge2.Set('chart.needle.colors', [RGraph.RadialGradient(gauge2, 125, 125, 0, 125, 125, 25, 'transparent', 'white'),
                                               RGraph.RadialGradient(gauge2, 125, 125, 0, 125, 125, 25, 'transparent', '#d66')]);
            gauge2.Set('chart.needle.size', [null, 50]);
            gauge2.Set('chart.text.color', 'white');
            gauge2.Set('chart.tickmarks.big.color', 'white');
            gauge2.Set('chart.tickmarks.medium.color', 'white');
            gauge2.Set('chart.tickmarks.small.color', 'white');
            gauge2.Set('chart.border.outer', '#666');
            gauge2.Set('chart.border.inner', '#333');
            gauge2.Set('chart.colors.ranges', []);
            gauge2.Draw();            
			function Updategauge2 () {
				gauge2.value = [RGraph.random(2,190), RGraph.random(5,195), RGraph.random(5,195)]
				RGraph.Effects.Gauge.Grow(gauge2);
				setTimeout(Updategauge2, 2000);
			}
			Updategauge2();
            var gauge3 = new RGraph.Gauge('cvs3', -100, 100, 84);
            gauge3.Set('chart.scale.decimals', 0);
            gauge3.Set('chart.tickmarks.small', 50);
            gauge3.Set('chart.tickmarks.big',5);
            gauge3.Set('chart.title.top', 'Java小强');
            gauge3.Set('chart.title.top.size', 24);
            gauge3.Set('chart.title.bottom', 'cuisuqiang@163.com');
            gauge3.Set('chart.title.bottom.color', '#aaa');
            gauge3.Set('chart.colors.ranges', [[-100, -90, 'red'], [-90, -80, 'yellow'], [80, 90, 'yellow'], [90, 100, 'red']]);
            gauge3.Set('chart.adjustable', true);
            gauge3.Draw();
			function Updategauge3 () {
				gauge3.value = RGraph.random(2,99);
				RGraph.Effects.Gauge.Grow(gauge3);
				setTimeout(Updategauge3, 2000);
			}
			Updategauge3();			
        }
    </script>
</head>
<body>
    <div style="text-align: center">
        <canvas id="cvs1" width="250" height="250">[No canvas support]</canvas>
        <canvas id="cvs2" width="250" height="250">[No canvas support]</canvas>
        <canvas id="cvs3" width="250" height="250">[No canvas support]</canvas>
    </div>
</body>
</html>

 

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

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

4
2
分享到:
评论
6 楼 Java闫平 2015-02-10  
这个能画半圆吗???
5 楼 yymh123 2015-02-03  
yymh123 写道
亲,这个能改变刻度吗

我看了api。发现刻度值没法设置。。
4 楼 yymh123 2015-02-03  
亲,这个能改变刻度吗
3 楼 xingchensuifeng 2014-01-15  
非常棒来着,当然,如果能有注释最好了。感谢分享。
2 楼 cuisuqiang 2012-06-13  
iro 写道
运行了下,发现很占CPU!

你好,目前IE9对Html5支持比较好,如果使用9以下版本运行excanvas,确实很耗内存,而且能把浏览器搞死!你可以还火狐或其他支持excanvas比较好的浏览器试试!
1 楼 iro 2012-06-13  
运行了下,发现很占CPU!

相关推荐

    毕设项目-基于Vue+JavaScript的智慧养老后台管理系统源码.zip

    毕设项目-基于Vue+JavaScript的智慧养老后台管理系统源码.zip毕设项目-基于Vue+JavaScript的智慧养老后台管理系统源码.zip毕设项目-基于Vue+JavaScript的智慧养老后台管理系统源码.zip毕设项目-基于Vue+JavaScript的...

    课程设计-基于Vue+JavaScript的上门家教预约客户端app源码.zip

    课程设计-基于Vue+JavaScript的上门家教预约客户端app源码.zip课程设计-基于Vue+JavaScript的上门家教预约客户端app源码.zip课程设计-基于Vue+JavaScript的上门家教预约客户端app源码.zip课程设计-基于Vue+...

    javascript网页设计期末作业-基于html和js写的一个抽签系统

    javascript网页设计期末作业-基于html和js写的一个抽签系统javascript网页设计期末作业-基于html和js写的一个抽签系统javascript网页设计期末作业-基于html和js写的一个抽签系统javascript网页设计期末作业-基于html...

    课程大作业-基于JavaScript+HTML的药品库存管理系统源码.zip

    课程大作业-基于JavaScript+HTML的药品库存管理系统源码.zip课程大作业-基于JavaScript+HTML的药品库存管理系统源码.zip课程大作业-基于JavaScript+HTML的药品库存管理系统源码.zip课程大作业-基于JavaScript+HTML的...

    JavaScript暑期实训项目--基于VUE的游乐园管理网站.zip

    JavaScript暑期实训项目--基于VUE的游乐园管理网站JavaScript暑期实训项目--基于VUE的游乐园管理网站JavaScript暑期实训项目--基于VUE的游乐园管理网站JavaScript暑期实训项目--基于VUE的游乐园管理网站JavaScript...

    课程作业-基于Html+Css+JavaScript的英雄联盟官网静态页面.zip

    课程作业-基于Html+Css+JavaScript的英雄联盟官网静态页面.zip 课程作业-基于Html+Css+JavaScript的英雄联盟官网静态页面.zip 课程作业-基于Html+Css+JavaScript的英雄联盟官网静态页面.zip 【资源介绍】 该项目是...

    RGraph4.68-stable

    首先,RGraph 是一个基于JavaScript的库,它支持现代浏览器,包括Chrome、Firefox、Safari、Edge以及Internet Explorer 9及更高版本。通过利用HTML5的Canvas元素,RGraph 可以在网页上绘制出各种类型的图表,如条形...

    JS仪表盘JS仪表盘

    "JS仪表盘"通常指的是使用JavaScript库来创建数据可视化的工具,如实时图表、图形和仪表,用于展示各类数据指标,如业务性能、系统状态或统计数据。这些仪表盘通常具有丰富的定制选项,可以进行自定义样式、动画效果...

    html5 仪表盘

    这个特定的“html5 仪表盘”项目可能包含了用于创建这种动态界面的JavaScript库或组件。 HTML5是超文本标记语言的第五个主要版本,它引入了许多新功能和改进,旨在提高网页的交互性、可访问性和离线存储能力。在...

    课程设计-基于JavaScript开发的微信图书推荐小程序源码+项目说明.zip

    课程设计-基于JavaScript开发的微信图书推荐小程序源码+项目说明.zip课程设计-基于JavaScript开发的微信图书推荐小程序源码+项目说明.zip课程设计-基于JavaScript开发的微信图书推荐小程序源码+项目说明.zip课程设计...

    基于QT5.6编写Echart动态交互示例(仪表盘)-修改版

    在本项目中,我们主要探讨如何在基于QT5.6的环境中使用Echarts库来创建一个动态交互的仪表盘。Echarts是一个强大的、基于JavaScript的数据可视化库,它提供了丰富的图表类型,如折线图、柱状图、饼图以及我们的案例...

    基于HTML5 canvas的仪表盘特效源码 6种.zip

    "基于HTML5 canvas的仪表盘特效源码 6种.zip"是一个包含六种不同仪表盘效果的源代码集合,适合于开发数据可视化应用,例如监控界面、仪表盘风格的UI设计等。 首先,canvas是一个二维绘图上下文,允许开发者通过...

    课程作业-基于JavaScript的服装租赁的商城推荐页面源码.zip

    课程作业-基于JavaScript的服装租赁的商城推荐页面源码.zip课程作业-基于JavaScript的服装租赁的商城推荐页面源码.zip课程作业-基于JavaScript的服装租赁的商城推荐页面源码.zip课程作业-基于JavaScript的服装租赁的...

    PHP实现动态仪表盘

    5. **页面交互**:动态仪表盘需要响应用户的交互,如刷新数据或切换图表类型。这通常通过JavaScript实现,利用AJAX(Asynchronous JavaScript and XML)技术向服务器发送异步请求,获取新数据,然后更新图表。 6. *...

    2019最新SVG实现动态网络测速仪表盘特效动画.zip

    下面我们将深入探讨SVG、JavaScript与动态仪表盘特效动画的关联及实现方法。 1. SVG基础: - SVG图形是基于数学公式定义的,因此它们可以无限缩放而不失真。 - SVG元素包括路径(path)、圆形(circle)、椭圆...

    仪表盘的一个js Demo

    【标题】:“仪表盘的一个js Demo”涉及到的知识点主要集中在JavaScript(js)编程语言和HTML网页设计上,尤其是如何在网页上实现动态的实时仪表盘显示。JavaScript是一种广泛用于网页和网络应用的脚本语言,它能为...

    fusionchart支持仪表盘

    5. 如果需要修改仪表盘的样式或数据,可以直接编辑XML文件,然后刷新浏览器查看效果。 通过这个简单的示例,你可以学习到FusionCharts创建仪表盘的基本流程,以及如何利用XML进行数据和样式控制。这只是一个起点,...

    jQuery+html5 svg功率仪表盘代码

    通过以上分析,我们可以看到"jQuery+html5 svg功率仪表盘代码"是如何结合jQuery的便捷性和SVG的灵活性,构建出一个交互式的、动态更新的功率仪表盘。理解这些核心概念和技巧,对于开发类似的Web应用将大有裨益。

    精美时尚的jQuery动态仪表盘插件

    GaugeMeter是基于jQuery的一款强大的仪表盘插件,专门用于创建各种类型的动态仪表盘,如全圆形、半圆形和拱圆形的进度条。这款插件的主要特点包括: 1. **高度可定制化**:GaugeMeter提供了丰富的参数设置,允许...

    基于HTML5 canvas的仪表盘插件特效代码

    "基于HTML5 canvas的仪表盘插件特效代码"这个项目正是利用了这一特性,创建了一款名为canvas-gauges的插件。 canvas-gauges是一款专为开发者设计的工具,用于在网页上构建逼真的仪表盘组件。它不依赖任何外部库,...

Global site tag (gtag.js) - Google Analytics