javascript学习-svg绘制条形图

代码:
主要用来理解svg,不是重点

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style type="text/css">
			.axis{
				stroke: #999;
				stroke-width: 2px;
			}
		</style>
	</head>
	<body>
		<!-- 1获取数据
		2创建svg
		3创建坐标
		4绘制坐标
		5依据数据绘制矩形 -->
		<svg width="1000" height="700">
			<g id="zuobiao">
				<!-- x轴 -->
				<line class="axis" x1="50" y1="600" x2="950" y2="600"></line>
				<path d="M 925,590 L 950,600 L 925,610 Z"></path>
				<text x="900" y="630">时间</text>
				<!-- y轴 -->
				<line class="axis" x1="100" y1="650" x2="100" y2="50"></line>
				<path d="M 90,75 L 100,50 L 110,75 Z"></path>
				<text x="50" y="60">订单</text>
			</g>
			<g id="xkedu">
			     <!-- <line class="axis" x1="170" y1="600" x2="170" y2="580"></line> -->
			</g>
			<g id="ykedu">
			 
			</g>
			<g id="barList">		

			</g>
		</svg>
		<script type="text/javascript">
			var data=[{
				data:"星期一",
				order:"1000"
			},
			{
				data:"星期二",
				order:"500"
			},
			{
				data:"星期三",
				order:"600"
			},
			{
				data:"星期四",
				order:"1100"
			},
			{
				data:"星期五",
				order:"1500"
			},
			{
				data:"星期六",
				order:"1200"
			},
			{
				data:"星期天",
				order:"1300"
			}]
			console.log(data);
			var xkedu=document.querySelector("#xkedu")
			var ykedu=document.querySelector("#ykedu")
			var barListDom=document.querySelector("#barList")
			var length=700/data.length;
			var ylength=450/15;
			for(var i=1;i<=data.length;i++){
				renderkedu(i)
			}
			for(var i=1;i<=15;i++){
				ykedu.innerHTML=ykedu.innerHTML+`<line class="axis" x1="100" y1="${600-ylength*i}" x2="120" y2="${600-ylength*i}"></line>`
				+`<text x="50" y="${600-ylength*i}">${100*i}</text>`
			}
			function renderkedu(i){
				var lineDom=document.createElement("line");
				lineDom.className="axis";
				lineDom.setAttribute("x1",100+length*i)
				lineDom.setAttribute("y1","600")
				lineDom.setAttribute("x2",100+length*i)
				lineDom.setAttribute("y2","580")
				xkedu.innerHTML=xkedu.innerHTML+lineDom.outerHTML+`<text x="${75+length*i}" y="620">${data[i-1].data}</text>`;
				barListDom.innerHTML= barListDom.innerHTML+`<rect x="${75+length*i}" y="${600-(ylength*(data[i-1].order/100))}" width="50" height="${ylength*(data[i-1].order/100)}"></rect>`
			    console.log()
			}
			
		</script>
	</body>
</html>

结果:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值