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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容