美文网首页
canvas Four 柱状图

canvas Four 柱状图

作者: 尤樊容 | 来源:发表于2017-04-12 10:42 被阅读16次

    经过前面三节,这一节准备做点实用的,那就是柱状图。
    直接上代码,这一节没有什么新知识,就是前面的知识运用:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{
                margin: 0;
                padding: 0;
            }
            body{
                background: #000;}
            #c1{
                background: #fff;
                padding:50px;
            }
        </style>
        <script>
            //随机数
            function rnd(m,n){
                return parseInt(m+Math.random()*(n-m));
            }
            document.addEventListener('DOMContentLoaded',function(){
                var oC = document.getElementById('c1');
                var gd = oC.getContext('2d');
    
                //画x轴
                gd.beginPath();
                gd.strokeStyle = "black";
                gd.lineWidth = 2;
                gd.moveTo(10,590);
                gd.lineTo(760,590);
                gd.stroke();
    
                gd.beginPath();
                gd.moveTo(700,590);
                gd.lineTo(690,580);
                gd.stroke();
    
                gd.beginPath();
                gd.moveTo(700,590);
                gd.lineTo(690,600);
                gd.stroke();
    
                //画y轴
                gd.beginPath();
                gd.moveTo(10,590);
                gd.lineTo(10,10);
                gd.stroke();
    
                gd.beginPath();
                gd.moveTo(10,10);
                gd.lineTo(0,20);
                gd.stroke();
    
                gd.beginPath();
                gd.moveTo(10,10);
                gd.lineTo(20,20);
                gd.stroke();
    
                //首先需要有一些数据,先创造一些,可以用ajax获取服务器数据
                var arr=[300,200,50,800,150,900];
                //最大,求数组里面的最大值
                var iMax = Math.max.apply(null,arr);
    
                var aHeight = [];
                for(var i = 0;i<arr.length;i++){
                    //找到最大值,以最大值为标准,也就是最大值的高是画布的高,将求出的数据存到aHeight
                    aHeight[i] = arr[i]/iMax*(oC.height - 50);
                }
                //计算单个柱状图的高
                var w = (oC.width-50)/(aHeight.length*3-2);
                //两个柱状图之间的距离
                var iSpace = w*2;
    
                for(var i = 0;i<aHeight.length;i++){
                    //随机颜色
                    gd.fillStyle = 'rgb('+rnd(0,256)+','+rnd(0,256)+','+rnd(0,256)+')';
                    //画填充矩形
                    gd.fillRect(i*(w+iSpace)+10,oC.height - aHeight[i]-10,w,aHeight[i]);
                }
            },false);
        </script>
    </head>
    <body>
    <canvas id="c1" width="700" height="600"></canvas>
    </body>
    </html>
    

    效果图:

    Paste_Image.png

    相关文章

      网友评论

          本文标题:canvas Four 柱状图

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