前端------ canvas 绘制折线图详解

canvas时html5新添加的一个画布标签。

他有很多属性,大家可以在下边网址查看:

http://www.w3school.com.cn/tags/html_ref_canvas.asp

画布canvas中涉及到坐标运算,它是以浏览器空白左上角为起点,然后根据像素进行变化的一个元素,话不多说,下边是一个折线图的demo:

效果图如下:

源代码:

<!DOCTYPE html>
<html>
	<head>
		<title>只属于你的折线图!</title>
	</head>
	<body style="background-color:#f3f3f3"> 
		<canvas id="canvas" width=1000 height=650></canvas>
		<script>
			var canvas = document.getElementById("canvas");
			var startX = 100;
			var startY = 600;
			var ctx = canvas.getContext('2d');
			var data = [0,100,200,300,400,500];		//坐标轴坐标
			var point = [[100,200],[150,230],[200,190],[250,240],[300,300],[350,270],[400,500],[450,400],[500,100]];	//点坐标
			//建立坐标系
			function creat(){
				ctx.beginPath();
				ctx.moveTo(startX,50);
				ctx.lineTo(startX,startY);
				ctx.moveTo(startX,startY);
				ctx.lineTo(650,startY);
				ctx.closePath();
				ctx.stroke();

			}
			//填充横纵坐标
			function insert(){
				var x = 100;
				var y = 600;
				//绘制横坐标
				for(var i in data){
					ctx.fillText(data[i],x,y+20);
					x += 100;
				}
				x = 100;
				y = 600;
				//绘制纵坐标
				for(var i in data){
					ctx.fillText(data[i],x-20,y);
					y -= 100;
				}
			}
			//绘制折线
			var num = 0;
			var sh = setInterval(function(){
				//只有第一个点重新开始绘制
				if(num == 0)
					ctx.beginPath();
				//终止
				if(num == 8){
					clearInterval(sh);
				}
				var x = point[num][0];
				var y = point[num][1];
				//转换坐标
				x += 100;
				y = startY - y;
				ctx.arc(x,y, 2, 0, 2*Math.PI);
				//进行点的内部连接
				if(num != 0)
					ctx.lineTo(x,y);
				num++;
				ctx.moveTo(x,y);
				ctx.strokeStyle = "#3FA7DC";
				//连接边框
				ctx.stroke();
				console.log(num);
			}, 400);
			creat();
			insert();
		</script>
	</body>
</html>

 

 

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值