用html编写一幅简单的画,使用html5画简单的折线图

112d967a5a2e545ca4fb8c8c7600206b.png

//得到画布

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值