echarts柱状统计图

目录

一、简单的echarts柱状统计图 

二、柱状图和折线图混搭

三、一个项目里同时用不同版本的echarts画图


一、简单的echarts柱状统计图 

1、首先映入echarts所需的依赖包:echarts.js和echarts.min.js,以及jQuery.js;

     echarts官网下载:https://echarts.baidu.com/download.html

      jQuery官网下载:http://jquery.com/download/

2、源代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="echarts/4.2.1/echarts.js"></script>
    <script type="text/javascript" src="echarts/4.2.1/echarts.min.js"></script>
</head>
<body>
    <div id="main"  style="width: 900px;" class="chart-css" ref="myEchart"></div>
</body>
<script>
    $(function () {
        chart();
    });

    function chart() {
        var menuList =  ['小王', '小李', '小赵', '小马', '小刘', '小张', '小齐'];
        var dataList = [3100, 2142, 1218, 581, 431, 383, 163];

        var option = {
            title: {
                text: '常用报表统计',
            },
            tooltip: {
                show: true,
                trigger: 'axis',
                axisPointer: {  // 坐标轴指示器,坐标轴触发有效
                    type: 'shadow', // 默认为直线,可选为:'line' | 'shadow'
                    fontSize: 8
                }
            },
            legend: {
                data: ['访问量']
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true,
                // y2:140,
            },
            xAxis: {
                name: '访问次数',
                nameLocation: 'middle',// middle 居中显示  end 右边  start 左边
                nameTextStyle:{
                    fontWeight:'bold',
                    fontSize:14,
                    padding: [10, 0, 0, 0]
                },
                type: 'value',
                boundaryGap: [0, 0.01],
                splitLine: {  //网格样式
                    show: true,
                    lineStyle: {
                        color: ['#e7e8ec'],
                        width: 1,
                        type: 'solid'
                    }
                }
            },
            yAxis: {
                name: '名称',
                nameLocation: 'start',
                nameTextStyle:{
                    fontSize:14,
                    fontWeight:'bold'
                },
                type: 'category',
                data: menuList,
                inverse: true, //设置倒序排序
                splitLine: {  //网格样式
                    show: true,
                    lineStyle: {
                        color: ['#e7e8ec'],
                        width: 1,
                        type: 'solid'
                    }
                },
                axisLabel:{
                    interval:0,//Y轴信息全部显示
                    // rotate:-30,//-30度角倾斜显示
                }
            },
            series: [{
                name: '数量',
                type: 'bar',
                data: dataList,
                barWidth: 30,
                // barMaxWidth: 30,
                itemStyle: {
                    normal: {
                        label: {
                            show: true,
                            position: 'right',
                            textStyle: {
                                color: 'black',
                                fontSize: 16
                            }
                        },
                        color: '#88CFFF'
                    }
                }
            }
            ]
        };

        // 设置容器的高度和宽度
        var container = document.getElementById('main');
        var allNode = menuList.length;
        if(allNode < 3){
            allNode = 3;
        }else if(allNode < 5){
            allNode = 5;
        }
        var currentHeight = 55 * allNode;
        container.style.height = currentHeight + 'px'; //设置容器高度
        var myChart = echarts.init(document.getElementById('main'));
        window.onresize = function () {
            myChart.resize();
        }
        myChart.setOption(option);
    }
</script>
</html>

3、关键代码解析:

3.1、坐标名称显示位置:设置nameLocation属性,middle 表示居中显示 、end表示右边显示、start表示左边显示;

注意:nameTextStyle的padding属性可以设置坐标名称的位置,经实验4.2.0以下版本不支持;

3.2、坐标轴名称显示:设置axisLabel属性的interval为0,表示Y轴信息全部显示,rotate为-30,表示-30度角倾斜显示;

3.3、数据排序方式:inverse为true表示以倒序的方式排序;   

3.4、设置自适应容器高度:      

var container = document.getElementById('main');
var allNode = menuList.length;  // 获取显示数据的条数
var currentHeight = 55 * allNode;
container.style.height = currentHeight + 'px'; //设置容器高度
var myChart = echarts.init(document.getElementById('main'));    
myChart.setOption(option);

4、效果图:

二、柱状图和折线图混搭

     此例子主要是让柱状图的零刻度线和折线图的零刻度保持一致,并且折线图有负数显示。主要是通过设置yAxis的最大值和最小值控制的。

注意:请使用4.0版本以上,4.0一下版本不支持。

1、代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>折线和柱状混搭</title>
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/echarts-all-3.js"></script>

</head>
<body>
    <div id="mychart" style="width: 1000px;height: 500px"></div>
</body>
<script>
    $(function () {
        var myChart = echarts.init(document.getElementById("mychart"));
        option = {
            tooltip: {
                trigger: 'axis',
                axisPointer: {
                    type: 'cross',
                    crossStyle: {
                        color: '#999'
                    }
                }
            },
            color: ['#5b9bd5','#ed7d31'],
            legend: {
                data:['降水量','平均温度']
            },
            xAxis: [
                {
                    type: 'category',
                    data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
                    axisPointer: {
                        type: 'shadow'
                    }
                }
            ],
            yAxis: [
                {
                    type: 'value',
                    name: '水量',
                    max: function(value) {
                        if(Math.abs(value.max) > Math.abs(value.min)){
                            return (Math.abs(value.max)).toFixed(2);
                        }else{
                            return (Math.abs(value.min)).toFixed(2);
                        }
                    },
                    min: function(value) {
                        if(Math.abs(value.max) > Math.abs(value.min)){
                            return (-Math.abs(value.max)).toFixed(2);
                        }else{
                            return (-Math.abs(value.min)).toFixed(2);
                        }
                    },
                    axisLabel: {
                        margin: 2,
                        formatter: function (value, index) {
                            if (value > 0) {
                                value = value + "ml";
                            } else {
                                value = "";
                            }
                            return value;
                        }
                    },
                    splitLine:{
                        lineStyle:{
                            color:'rgba(91,155,213,0.3)',
                            type:'solid'
                        }
                    }
                },
                {
                    type: 'value',
                    name: '温度',
                    max: function(value) {
                        if(Math.abs(value.max) > Math.abs(value.min)){
                            return (Math.abs(value.max)).toFixed(2);
                        }else{
                            return (Math.abs(value.min)).toFixed(2);
                        }
                    },
                    min: function(value) {
                        if(Math.abs(value.max) > Math.abs(value.min)){
                            return (-Math.abs(value.max)).toFixed(2);
                        }else{
                            return (-Math.abs(value.min)).toFixed(2);
                        }
                    },
                    axisLabel: {
                        formatter: '{value} °C'
                    },
                    splitLine:{
                        lineStyle:{
                            color:'rgba(237,125,49,0.3)',
                            type:'solid'
                        }
                    }
                }
            ],
            series: [
                {
                    name:'降水量',
                    type:'bar',
                    data:[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
                    label: {
                        normal: {
                            show: true,            //显示数字
                            position: 'top'       //这里可以自己选择位置
                        }
                    }
                },
                {
                    name:'平均温度',
                    type:'line',
                    yAxisIndex: 1,
                    data:[2.0, -2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2],
                    label: {
                        normal: {
                            show: true,            //显示数字
                            position: 'top'       //这里可以自己选择位置
                        }
                    }
                }
            ]
        };

        window.onresize = function () {
            myChart.resize();
        }

        //加载图
        myChart.setOption(option);
    });
</script>
</html>

2、效果图

 

三、一个项目里同时用不同版本的echarts画图

 1、 需求:在项目中需要用到echarts新版本的功能,但是发现项目中一直用的是老版本的echarts,假如直接升级echarts版本就会影响之前echarts图的一下功能;

  2、实现:下载新版本的echarts同时在项目中引入进来,再修改新版本的echarts.js文件,把echarts.js文件中所有的‘echarts’改成‘echarts4’(如果你下载的是echarts.4.0.x 的版本就改成‘echarts4’;如果是echarts.5.0.x 或其他的,就改成 ‘echarts5’或 其他的);

  3、 用法:

var myChart = echarts4.init(document.getElementById("mychart"));

4、具体场景:

      4.1、项目中在同一页面同时显示一个柱状图和折线图混搭的图表,并且柱状 图只有正数,而折线图有负数,客户要求柱状图和折线图的零刻度线保持一致(4.0版本一下的无法实现)。

     4.2、在柱状图和折线图混搭的图表的同一页面显示一个雷达图,需要显示默认数值,用的的是radar属性:axisLabel.show 属性4.0以上版本不支持,并且会报错无法加载图表,错误信息:Uncaught TypeError: e.getCategories is not a function 。只能用4.0一下的版本(用不同的版本实现)。

 radar: {
        indicator: [
           { 
             text: '销售', 
             axisLabel: {
                show: true,  // 此属性不支持,会报错
                textStyle: {
                     fontSize: 18, 
                     color: '#333'
                 }
              }, 
             max: 6500
            },
            { 
              text: '管理',  
              max: 16000
           }     
        ]                      
    }

5、最终效果如下

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值