canvas Four 柱狀圖

經過前面三節,這一節準備做點實用的,那就是柱狀圖。
直接上代碼,這一節沒有什么新知識,就是前面的知識運用:

<!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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容