//得到画布 var can1=document.getElementByIdx_x_x_x("can"); //得到画笔 var cxt=can1.getContext("2d"); //定义图表的数据,该方式为创建数组直接量的方式 var sale_data=[80,92,104,110,68,50,45,90,74,98,103]; //首先为背景进行设置渐变的效果,表示的是从(0,0)到(600,0)即纵坐标上边显示渐变的效果 var g=cxt.createLinearGradient(0,100); g.addColorStop(0,"#e0e0e0"); g.addColorStop(1,"#ffffff"); //将渐变效果添加在我们的画布上边 cxt.fillStyle=g; //开始绘制效果 cxt.fillRect(0,can1.width,can1.height); //设置要绘制方格的行数和列数 var cols=sale_data.length+1; var rows=4; //计算每一个小方格的宽度和高度 var cell_width=can1.width/cols; var cell_height=can1.height/rows; //设置绘制的颜色 cxt.strokeStyle="#a0a0a0"; //调用绘制表格的函数 drawTable(sale_data); //绘制表格的函数 function drawTable(data){ cxt.beginPath(); //开始画竖线 for(var i=0;i<=rows;i++){ //计算绘制的坐标 var heiy=cell_height*i; cxt.moveTo(0,heiy); cxt.lineTo(can.width,heiy); } //绘制横线 for(var j=0;j<=cols;j++){ //计算绘制的坐标 var widx=cell_width*j; cxt.moveTo(widx,0); cxt.lineTo(widx,can1.height); } //绘制表格完成 cxt.stroke(); //获取数据当中的最大值,以便可以划分纵坐标轴,来进行绘图,即每个像素代表的数值是多少,纵坐标的最大值 var max_val=0; for(var i=0;i if(max_val max_val=data[i]; } } //之后我们对最大值再放大一点,作为坐标轴的最大值 max_val=max_val*1.1; //现在我们计算每个数据的坐标轴 //这里我们将计算出来的坐标轴数据写入到我们的数组对象当中去 var points=[]; for(var i=0;i var v=data[i]; var px=cell_width*(i+1); var py=can1.height-can1.height*(v/max_val); points.push({"x":px,"y":py}); } //开始绘制折线 cxt.beginPath(); cxt.moveTo(points[0].x,points[0].y); for(var j=1;j cxt.lineTo(points[j].x,points[j].y); } cxt.strokeStyle="#ee0000"; cxt.stroke(); //绘制坐标的小圆点 for(var j in points){ var p=points[j]; cxt.beginPath(); cxt.arc(p.x,p.y,6,2*Math.PI); cxt.fillStyle="#ee0000"; cxt.fill(); } }
转自:http://blog.sina.com.cn/s/blog_7256fe8f010165cb.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。