HTML5 柱状图

     

<style>
    canvas {
      border: 1px solid black; 
      background-color: aliceblue;
    }
  </style>
</head>
<body>
  <canvas id="cvs" width="450" height="250"></canvas>
  <script>
    let ctx = cvs.getContext('2d') // Context对象
    const WIDTH = 450    // 画布的宽  
    const HEIGHT = 250   // 画布的高
    let barWidth = 45    // 柱子的宽度
    let data = [120, 200, 150, 80, 70, 110, 130] // 数据
    // 通过已知的参数,计算绘制7根柱子所需要的数据
    let xs = []
    let ys = []
    let ws = []
    let hs = []
    // 整理这些数组数据
    let fx = 
      (WIDTH - barWidth*data.length)/(2*data.length)
    for(let i=0; i<data.length; i++){
      xs.push(i*barWidth + (2*i+1)*fx)
      ys.push(HEIGHT - data[i] - 20)
      ws.push(barWidth) 
      hs.push(data[i])
    }
    // 根据已知数据,绘制柱状图
    for(let i=0; i<data.length; i++){
      // 输出柱子
      ctx.fillStyle = "#36D"
      ctx.fillRect(xs[i], ys[i], ws[i], hs[i])
      // 输出文本
      ctx.fillStyle = "#000"
      ctx.font = '13px 微软雅黑'
      ctx.textAlign = 'center'
      ctx.fillText(data[i], xs[i]+barWidth/2, HEIGHT-5)
    }

  </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值