美文网首页前端的那些事
canvas画圆顶柱状图

canvas画圆顶柱状图

作者: 渣猫不让吸 | 来源:发表于2019-12-25 16:36 被阅读0次

需求&效果图

canvas.png
DOM部分
<canvas id="demos">
      你的浏览器不支持 canvas,请升级你的浏览器。
</canvas>
Js部分
  <script src="./_histogram.js"></script>
  <script>
    let canvas = document.getElementById('demos');
    // 检测支持性
    if (canvas.getContext) {
      canvas.width = 500
      canvas.height = 350
      // 获取2d上下文对象
      let ctx = canvas.getContext('2d');
      let htgParam = [
        {
          label: '设计',
          value: '100%',
          color: {
            start: '#273D6D',
            end: '#477FA0'
          }
        },
        {
          label: '产品',
          value: '86.4%',
          color: {
            start: '#693756',
            end: '#744F5A'
          }
        },
        {
          label: '财务',
          value: '74.6%',
          color: {
            start: '#2E80D2',
            end: '#45CDDF'
          }
        },
        {
          label: '技术',
          value: '74.6%',
          color: {
            start: '#E8E5E4',
            end: '#FFFFFF'
          }
        },
        {
          label: '市场',
          value: '56%',
          color: {
            start: '#1B7FD2',
            end: '#64C1E9'
          }
        },
      ]
      strokeHistogralm(ctx, htgParam)
    } else {
      alert('你的浏览器不支持 canvas,请升级你的浏览器。');
    }
  </script>
辅助函数_histogram.js
  /**
  * 绘制圆角矩形
  * @param {Object} ctx - canvas组件的绘图上下文
  * @param {Array} columns - 数据
  */
  const strokeHistogralm = (ctx, columns = []) => {
    // 描绘坐标轴
    ctx.beginPath();
    ctx.strokeStyle = '#FFFFFF';
    ctx.lineWidth = 4;
    ctx.moveTo(50,302);
    ctx.lineTo(450,302);
    ctx.lineCap = 'round';
    ctx.stroke();

    // 描绘柱体
    columns.forEach((element, index) => {
      let {label,value,color} = element
      let labelX = 72 + index * 80
      let middleX = 90 + index * 80
      let fillRectX = 75 + index * 80
      let fillRectY = 115 + Math.ceil(100 - element.value.slice(0,-1)) * 2

      ctx.beginPath()
      ctx.font = "14px 'arial'"
      ctx.fillStyle = '#FFFFFF';
      ctx.fillText(value, labelX, fillRectY - 30);
      ctx.fillText(label, labelX, 329);
      ctx.beginPath();
      let grd = ctx.createLinearGradient(middleX,300,middleX,fillRectY - 15);
      grd.addColorStop(0,color.start);
      grd.addColorStop(1,color.end);
      ctx.fillStyle = grd;
      console.log(fillRectY)
      ctx.fillRect(fillRectX, fillRectY, 30, 300 - fillRectY);
      ctx.arc(fillRectX + 15, fillRectY, 15, Math.PI, Math.PI * 2);
      ctx.fill();
      ctx.closePath();
    })
  }

相关文章

  • canvas画圆顶柱状图

    需求&效果图 DOM部分 Js部分 辅助函数_histogram.js

  • canvas画柱状图

    需求 有个下图所示的需求,使用highcharts有点大材小用,而且也没特别合适的,heightcharts的柱状...

  • canvas图表(1) - 柱状图

      原文地址:canvas图表(1) - 柱状图  图表一般使用到svg或canvas,其中canvas图表在处理...

  • HTML5中canvas使用

    1、Canvas基础 2、Canvas画直线 3、Canvas画矩形 4、Canvas画文字 5、Canvas画圆...

  • 2019-03-21

    JavaScript canvas canvas 绘制图形,结合逻辑整理动画效果,页面柱状图等 基本操作 1.xx...

  • canvas画柱状图 和饼图

    学习扔物线大大的教程 http://hencoder.com/ui-1-1/https://github.com/...

  • uni 小程序 canvas截图保存到本地

    canvas 生产图片,保存到本地功能。 canvas 组件 js 画canvas js

  • 圆顶

    今天我在学校门口拿到了一把免费的飞盘扇子。一回到家我就迫不及待地和妹妹玩起了你飞我捡的游戏。 我用力...

  • canvas基础学习笔记

    学习目标 1.canvas画线 2.canvas画矩形 3.canvas写字 4.canvas画圆 5.canva...

  • 圆形头像

    HTML: // canvas画海报var loading;funct...

网友评论

    本文标题:canvas画圆顶柱状图

    本文链接:https://www.haomeiwen.com/subject/byycoctx.html