html5画折线图,canvas折线图绘制

折线图

canvas{

border: 1px solid #000;

}

var canvas=document.getElementById('canvas');

var ctx=canvas.getContext('2d');

/*画布的宽高*/

var w=canvas.width,

h=canvas.height;

/* 起始点距离边上的位置*/

var padding=20;

ctx.moveTo(padding,padding);

ctx.lineTo(padding,h-padding);

ctx.lineTo(w-padding,h-padding);

ctx.stroke();

/*箭头的宽高*/

var arrowW=16,

arrowH=16;

/*竖方向箭头*/

ctx.beginPath();

ctx.moveTo(padding,padding-arrowH/2);

ctx.lineTo(padding-arrowW/2,padding+arrowH/2);

ctx.lineTo(padding,padding);

ctx.lineTo(padding+arrowW/2,padding+arrowH/2);

/*横向箭头*/

ctx.moveTo(w-padding+arrowW/2,h-padding);

ctx.lineTo(w-padding-arrowW/2,h-padding-arrowH/2);

ctx.lineTo(w-padding,h-padding);

ctx.lineTo(w-padding-arrowW/2,h-padding+arrowH/2)

ctx.fill();

/*封装画小方块的函数*/

function drawPoint(x,y,r,color){

r=r||8;

color=color||'#000';

ctx.beginPath();

ctx.moveTo(x-r,y-r);

ctx.lineTo(x+r,y-r);

ctx.lineTo(x+r,y+r);

ctx.lineTo(x-r,y+r);

ctx.fillStyle=color;

ctx.fill();

}

// drawPoint(40,40);

/*每个小方块的位置*/

var points=[ [20,80],[40,1200],[80,80],[200,300],[400,150] ];

var x0=padding,

y0=h-padding;

/*让每个小方块的位置按照points[0][0]的大小排列*/

points.sort(function(a,b){

return a[0]-b[0];

})

/*获取坐标轴的有效长度*/

var xLength=w-2*padding-arrowW;

var yLength=h-2*padding-arrowH;

/*求出y坐标的最大值*/

var yMax=Math.max.apply(null,points.map(function(ele){

return ele[1];

}))

console.log(yMax);

/*求出x坐标的最大值*/

var xMax=points[points.length-1][0];

console.log(xMax);

/* 让每一个小方块的位置*/

var renderPoints=points.map(function(ele){

var x,y;

/*缩放坐标点*/

x=ele[0]*xLength/xMax;

y=ele[1]*yLength/yMax;

/*坐标系原点变换*/

x+=x0;

y=y0-y;

return [x,y];

})

console.log(renderPoints);

/*给每个小方块添加到每一个位置去*/

renderPoints.forEach(function(ele){

drawPoint(ele[0],ele[1],6,'#daa50');

})

/*开始连线*/

ctx.beginPath();

ctx.strokeStyle='red';

ctx.moveTo(renderPoints[0][0],renderPoints[0][1]);

renderPoints.forEach(function(ele,i){

if(i!=0){

ctx.lineTo(ele[0],ele[1]);

ctx.stroke();

}

})

%E4%B8%8B%E8%BD%BD.png

欢迎分享本文,转载请保留出处:前端ABC » canvas折线图绘制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值