canvans绘画柱状图

上期带大家学习了canvas绘画的基础知识,今天我们就用canvas里的知识画一张柱状图吧,正所谓学的知识都要活学活用的。

//创建画布的样式
 <style>
        * {
            margin: 0;
            padding: 0;
        }

        #mycanvas {
            margin-left: 200px;
            border: 1px solid red;
        }
    </style>
//在body里创建一个画布
<body>
    <canvas id="mycanvas" width='800' height='700'>


    </canvas>

</body>

<script>
    var c = document.getElementById('mycanvas');//获取画布
    var stx = c.getContext('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', 'black', 'pink']
    }//柱状统计图要写入的数据

    //xy的统计框架
    //x

    stx.translate(80, 600);
    stx.beginPath();//开辟新路径
    stx.moveTo(0, 0);//x的起始点
    stx.lineTo(500, 0);//路径
    stx.strokeStyle = 'blue';//描边的颜色
    stx.stroke();//描边
    stx.closePath()//闭合路径

    //y
    stx.beginPath();
    stx.moveTo(0, 0);
    stx.lineTo(0, -600);
    stx.strokeStyle = 'blue';
    stx.stroke();
    stx.closePath();


    stx.textBaseline = 'middle';//垂直居中

    for (var j in data.y) {
        stx.beginPath();
        stx.fillText(data.y[j], -30, -j * 50);
        stx.moveTo(0, -j * 50);
        stx.lineTo(-5, -j * 50);
        stx.stroke();
        stx.closePath()

    }
    stx.textAlign='center';//水平居中
    for(var i=0;i<data.val.length;i++){ 
        stx.beginPath(); 
        stx.moveTo((i+1)*60,0); 
        stx.lineTo((i+1)*60,-data.val[i]/2); 
        stx.lineWidth=40; //
        stx.strokeStyle=data.col[i]; 
        stx.stroke(); 
        stx.closePath(); 
        stx.beginPath(); 
        stx.fillText(data.x[i],(i+1)*60,10); //月份的写入
        stx.fillText(data.val[i],(i+1)*60,-data.val[i]/2-10) //数据的对应
        
    } 
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容