利用canvas可以直接在页面中绘制各种复杂的图形,其中引用到一个Rgraph的插件。

Rgraph插件使用非常方便,只需几步就可以完成一个折线图、饼图、柱状图,或是其中两者图形的结合!

(1) 引用RGraph.common.core.js这个脚本文件,这个是插件的核心脚本,必须引用,否则不可用。但是在测试时,发现有时会报错,没用引用jQuery的插件,所以报错时,需引用这个jquery-1.4.1.js的这个脚本文件;

(2) 需根据业务需用绘制的图形引用对应的脚本文件。

例如绘制柱状图需引用RGraph.bar.js脚本文件;

绘制折线图需引用RGraph.line.js脚本文件;

绘制饼图需引用RGraph.pie.js脚本文件;

绘制横向柱状图需引用RGraph.hbar.js脚本文件;

如果要有鼠标移动图上要有提示信息,需引用RGraph.common.tooltips.js脚本文件;

如果要鼠标右键有菜单项,需引用RGraph.common.context.js脚本文件;

(3) 在页面中添加canvas元素,代码如下:

<canvas id="myCanvas"  width="700" height="400">
         [你的浏览器不支持canvas元素]
       </canvas>

(4) 绘制统计图的关键代码:

1.绘制柱状图:

var myGraph = new RGraph.Bar("myCanvas", [1200, 1300, 1400, 1500, 3000, 1900, 2000, 2100, 2500, 2700, 1400, 2600]); //绘制柱状图,指定数据
            myGraph.Set("chart.title", "XXXX商场冰箱销售图"); //指定统计图标题
            myGraph.Set("chart.title.xaxis", "销售月份");  //指定x轴标题
            myGraph.Set("chart.title.yaxis", "销售台数"); //指定y轴标题
            myGraph.Set("chart.labels", ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']); //指定x轴坐标轴的文字
            myGraph.Set("chart.ylabels.specific", ['3000', '2500', '2000', '1500', '1000', '500']);  //指定y轴坐标轴的文字
            myGraph.Set("chart.labels.above", true); //指定在坐标轴顶部绘制说明销售数量的文字
            myGraph.Set("chart.background.grid.autofit", true);  //指定网格自动与坐标轴单位对齐
            myGraph.Set("chart.background.grid.autofit.align", true);  //指定网格自动与坐标轴单位对齐
            myGraph.Set("chart.gutter", 65); //指定标签文字所使用的空间文字

myGraph.Draw(); //绘制柱状图
           

2.绘制折线图:

代码如下:

var myGraph = new RGraph.Line("myCanvas", [1100, 1420, 1460, 1580, 3090, 1920, 2010, 2120, 2720, 2120, 1720, 2690]); //绘制柱状图,指定数据
            myGraph.Set("chart.title", "XXXX商场冰箱销售图"); //指定统计图标题
            myGraph.Set("chart.title.xaxis", "销售月份");  //指定x轴标题
            myGraph.Set("chart.title.yaxis", "销售台数"); //指定y轴标题
            myGraph.Set("chart.labels", ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']); //指定x轴坐标轴的文字
            myGraph.Set("chart.ylabels.specific", [ '3000', '2500', '2000', '1500', '1000', '500']);  //指定y轴坐标轴的文字
            myGraph.Set("chart.labels.above", true); //指定在坐标轴顶部绘制说明销售数量的文字
            myGraph.Set("chart.background.grid.color", 'rgba(238,238,238,1)');  //指定网格自动与坐标轴单位对齐
            myGraph.Set("chart.gutter", 65); //指定标签文字所使用的空间文字
            myGraph.Draw(); //绘制柱状图

3.绘制饼图:

代码如下:

var pie = new RGraph.Pie("myCanvas", [560, 340, 120, 150, 350, 190]); //绘制柱状图,指定数据
           pie.Set("chart.title", "XXXX商场冰箱销售图"); //指定统计图标题
           pie.Set("chart.labels", ['长虹(18%)', '康佳(7%)', '格力(12%)', '三星(17%)', '海尔(24%)', '美的(22%)']); //绘制饼图文字
           pie.Set("chart.key", ['长虹(18%)', '康佳(7%)', '格力(12%)', '三星(17%)', '海尔(24%)', '美的(22%)']); //添加使用图例
           pie.Set("chart.key.background",'white');
           pie.Set("chart.linewidth", 5);
           pie.Set("chart.strokestyle", 'white'); //绘制饼图分割线
           pie.Set("chart.tooltips.effect", 'fade');
           pie.Set("chart.tooltips.event", 'onmousemove');
           pie.Set("chart.tooltips", ['长虹(18%)', '康佳(7%)', '格力(12%)', '三星(17%)', '海尔(24%)', '美的(22%)']); //指定工具条上提示信息文字
           pie.Set('chart.highlight.style', '3d');
           //绘制环形饼图
//           pie.Set('chart.variant', 'donut');
           pie.Draw(); //绘制柱状图

4.绘制横向柱状图:

代码如下:

var myGraph = new RGraph.HBar("myCanvas", [1100, 1420, 1460, 1580, 3090, 1920, 2010, 2120, 2720, 2120, 1720, 2690]); //绘制柱状图,指定数据
            myGraph.Set("chart.title", "XXXX商场冰箱销售图"); //指定统计图标题
            myGraph.Set("chart.title.xaxis", "销售月份");  //指定x轴标题
            myGraph.Set("chart.title.yaxis", "销售台数"); //指定y轴标题
            myGraph.Set("chart.labels", ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']); //指定x轴坐标轴的文字
            myGraph.Set("chart.labels.above", true); //指定在坐标轴顶部绘制说明销售数量的文字
            myGraph.Set("chart.background.grid.autofit", true);  //指定网格自动与坐标轴单位对齐
            myGraph.Set("chart.background.grid.autofit.align", true);  //指定网格自动与坐标轴单位对齐
            myGraph.Set("chart.gutter", 40); //指定标签文字所使用的空间文字
            myGraph.Draw(); //绘制柱状图

利用canvas和RGraph作图的更多相关文章

  1. 利用 canvas 破解 某拖动验证码

    利用 canvas 破解 某拖动验证码 http://my.oschina.net/u/237940/blog/337194

  2. 利用Canvas进行绘制XY坐标系

    首先来一发图 绘制XY的坐标主要是利用Canvas setLeft和setBottom功能(Canvas内置坐标的功能) 1.首先WPF中的坐标系都是从左到右,从上到下的 即左上角位置(0,0)点,所 ...

  3. 利用canvas实现的中点Bresenham算法

    Bresenham提出的直线生成算法的基本原理是,每次在最大位移方向上走一步,而另一个方向是走步还是不走步取决于误差项的判别,具体的实现过程大家可以去问度娘.我主要是利用canvas画布技术实现了这个 ...

  4. 利用canvas压缩图片

    现在手机拍的照片动不动就是几M,当用户上传手机里的照片时一个消耗流量大,一个上传时间长,为了解决这个问题,就需要压缩图片: 想法:利用canvas重绘图片,保持宽高比不变,具体宽高根本具体情况而定. ...

  5. HTML5利用canvas,把多张图合并成一张图片

    需求分析,根据当前网页中的几张图片,在手机上长按,保存图片到相册或者发送给好友. drawCanvas(){ var self = this; var imgsrcArray = [ require( ...

  6. 利用canvas将网页元素生成图片并保存在本地

    利用canvas将网页元素生成图片并保存在本地 首先引入三个文件: 1.<script type="text/javascript" src="js/html2ca ...

  7. 利用canvas对上传图片进行上传前压缩

    利用谷歌调式工具发现,图片大小直接影响着首屏加载时间. 且考虑到后期服务端压力,图片压缩特别必要. 本文是前端利用canvas实现图片.参考文章:https://www.cnblogs.com/007 ...

  8. 10分钟,利用canvas画一个小的loading界面

    首先利用定义下canvas得样式 <canvas width="1024" height="720" id="canvas" styl ...

  9. Android利用canvas画各种图形

    Android利用canvas画各种图形(点.直线.弧.圆.椭圆.文字.矩形.多边形.曲线.圆角矩形) 本文链接:https://blog.csdn.net/rhljiayou/article/det ...

随机推荐

  1. 在ASP.NET MVC3 中利用JSONP跨域登录WEB系统

    在信息系统开发的时,根据相关业务逻辑难免会多系统之间互相登录.一般情况下我们需要在多系统之间使用多个用户名和密码.这样客户就需要在多个系统之间重复登陆.每次登录都需要输入用户名和密码.最近比较流行的就 ...

  2. python3----函数、匿名函数

    本节将学习如何用Python定义函数,调用函数,以及学习匿名函数的使用 1.定义函数 Python中定义函数用关键字def,如下例所示,func为函数名 def func(): print( &quo ...

  3. 160701、理解 Promise 的工作原理

    Javascript 采用回调函数(callback)来处理异步编程.从同步编程到异步回调编程有一个适应的过程,但是如果出现多层回调嵌套,也就是我们常说的厄运的回调金字塔(Pyramid of Doo ...

  4. 解决"django-registration(1048,“column”last_login“不能为null”)

    去数据库(MySQL终端): 1.查看django_migrations表的信息.如果你看到一些记录,删除它们(如果migrations目录下有原来的配置,需要清除). mysql> SELEC ...

  5. delphi xe学习随意记录

    学习来源(根据他们的资料整理) 论坛:http://www.coder163.com(有视频) 博客:http://del.cnblogs.com/(万一的博客) 1.1.1    命名规范的概述 1 ...

  6. CentOS7保留默认Python版本并安装更新Python2和Python3共存

    CentOS 7 默认的python版本是python2.7.5.因为yum依赖于默认的python版本的缘由,所以要先保留默认版本,并修改yum文件头部后,才能开始安装更新python2和pytho ...

  7. sql语句select group by order by where一般先后顺序

    写的顺序:select ... from... where.... group by... having... order by..执行顺序:from... where...group by... h ...

  8. python函数回顾:slice()

    描述 slice() 函数实现切片对象,主要用在切片操作函数里的参数传递. 语法 class slice(stop) class slice(start, stop[, step]) 参数说明: st ...

  9. 细数Python中的数据类型以及他们的方法

    一.数据类型的种类及主要功能 1.数字类型 数字类型主要是用来计算,它分为整数类型int和浮点类型float 2.布尔类型 布尔类型主要是用于判断,它分为真True和False两种 3.字符串类型 字 ...

  10. linux环境配置时钟同步ntpd服务

    配置: 服务器1:192.168.169.139 服务器2:192.168.169.140 服务器3:192.168.169.141 目的:NTP能与互联网的时间保持同步,而且本身也是一台NTP服务器 ...