美文网首页
使用h5新特性canvas简单生成一个柱状图

使用h5新特性canvas简单生成一个柱状图

作者: 光年之外iii | 来源:发表于2019-11-09 20:26 被阅读0次

要展现一种数据,最直观的方式便是生成数据图,图例永远要比文字说明更加的清晰明了。因此,今天来生成一个利用canvas画布上的柱状图。
首先,先设置一个x,y轴,以便于柱状图的生成

var canvas = document.getElementById('mycanvas')
    var ctx = canvas.getContext('2d')
    //获取画布的id。以及声明画布的书写方式为2d
    //创建备用的数据
    var data = {
        x: ["一月", "二月", "三月", "四月", "五月", "六月"],
        y: ["0", "100", "200", "300", "400", "500", "600", "700", "800", "900", "1000"],
        val: ["300", "210", "120", "560", "800", "660"],
        col: ["red", "green", "blue", "skyblue", "limegreen", "pink"]
    }
    //画出x,y轴,并提前设置居中样式
    ctx.translate(10, 900)
    ctx.beginPath();
    ctx.moveTo(10, 0);
    ctx.lineTo(810, 0);
    ctx.strokeStyle = 'blue';
    ctx.closePath()
    ctx.stroke()
    ctx.beginPath();
    ctx.moveTo(10, 0);
    ctx.lineTo(10, -800);
    ctx.strokeStyle = 'blue';
    ctx.closePath()
    ctx.stroke() 
    ctx.textAlign='center';
    ctx.textBaseline='middle'

准备完成后,开始绘出柱状图

 for (var i = 0; i < data.val.length; i++) {
        ctx.beginPath();
        ctx.moveTo(60 * (i + 1), 0);
        //画出柱状图的位置,并给柱状图设置一个宽度
        ctx.lineWidth = 40;
        ctx.lineTo(60 * (i + 1), -data.val[i] / (10 / 8));
        //按照比例对柱状图实际的尺寸进行缩小
        ctx.strokeStyle = data.col[i];
        //将数据,以及x轴参照数据点写入
        ctx.fillText(data.x[i],60*(i+1),-data.val[i]/(10/8)-10)
        ctx.closePath()
        ctx.stroke()
    }

绘制出y轴的数据点

for (var j = 0; j < data.y.length; j++) {
        ctx.beginPath();
        ctx.moveTo(0, -80*j);
        ctx.lineTo(10, -80 * j);
        ctx.fillText(data.y[j],20,-80*j)
        ctx.strokeStyle = 'blue';
        ctx.closePath();
        ctx.stroke();
        
    }

完整代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <canvas id="mycanvas" width="1000" height="1000" style="border:1px solid #f23"></canvas>
</body>
<script>
    var canvas = document.getElementById('mycanvas')
    var ctx = canvas.getContext('2d')
    //获取画布的id。以及声明画布的书写方式为2d
    //创建备用的数据
    var data = {
        x: ["一月", "二月", "三月", "四月", "五月", "六月"],
        y: ["0", "100", "200", "300", "400", "500", "600", "700", "800", "900", "1000"],
        val: ["300", "210", "120", "560", "800", "660"],
        col: ["red", "green", "blue", "skyblue", "limegreen", "pink"]
    }
    //画出x,y轴,并提前设置居中样式
    ctx.translate(10, 900)
    ctx.beginPath();
    ctx.moveTo(10, 0);
    ctx.lineTo(810, 0);
    ctx.strokeStyle = 'blue';
    ctx.closePath()
    ctx.stroke()
    ctx.beginPath();
    ctx.moveTo(10, 0);
    ctx.lineTo(10, -800);
    ctx.strokeStyle = 'blue';
    ctx.closePath()
    ctx.stroke() 
    ctx.textAlign='center';
    ctx.textBaseline='middle'
    for (var j = 0; j < data.y.length; j++) {
        ctx.beginPath();
        ctx.moveTo(0, -80*j);
        ctx.lineTo(10, -80 * j);
        ctx.fillText(data.y[j],20,-80*j)
        ctx.strokeStyle = 'blue';
        ctx.closePath();
        ctx.stroke();
        
    }

    for (var i = 0; i < data.val.length; i++) {
        ctx.beginPath();
        ctx.moveTo(60 * (i + 1), 0);
        //画出柱状图的位置,并给柱状图设置一个宽度
        ctx.lineWidth = 40;
        ctx.lineTo(60 * (i + 1), -data.val[i] / (10 / 8));
        //按照比例对柱状图实际的尺寸进行缩小
        ctx.strokeStyle = data.col[i];
        //将数据,以及参照数据点写入
        ctx.fillText(data.x[i],60*(i+1),-data.val[i]/(10/8)-10)
        ctx.closePath()
        ctx.stroke()
    }
</script>

</html>

相关文章

  • 使用h5新特性canvas简单生成一个柱状图

    要展现一种数据,最直观的方式便是生成数据图,图例永远要比文字说明更加的清晰明了。因此,今天来生成一个利用canva...

  • html5新特性及常见问题

    h5新特性 用于绘画canvas元素 用于媒介回放的video和audio元素 本地离线存储localStorag...

  • H5新特性---canvas

    API 应用程序接口 一个程序提供给另一个程序 可以对本程序进行操作 外部接口: 查看天气, 汽车违章,菜谱等 ...

  • canvas图表(1) - 柱状图

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

  • h5新特性和viewport

    h5新特性 于绘画的 canvas 元素 用于媒介回放的 video 和 audio 元素 对本地离线存储的更好的...

  • 生成背景带高斯模糊的海报

    html2canvas 当我们想生成一个海报的时候,最简单的方法是使用html2canvas(https://ht...

  • 第四天h5,css3

    h5新特性 用于绘画的 canvas 元素用于媒介回放的 video 和 audio 元素对本地离线存储的更好的支...

  • canvas绘制柱状图

    使用javaScript的canvas绘制简单的柱状图还是比较容易的,实现的效果图如下所示: 其实现原理就是首先绘...

  • 三 canvas简单入门

    ← 数据可视化前端技术选型canvas 是 HTML5 的新特性,它允许我们使用 canvas 元素在网页上通过 ...

  • HTML5新特性

    HTML5新特性包括:H5新增标签包括语义标签、增强型表单、视频和音频等、Canvas绘图、SVG绘图、地理定位、...

网友评论

      本文标题:使用h5新特性canvas简单生成一个柱状图

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