echarts通过ajax加载数据渲染图表(堆叠条形图)

堆叠条形图

官网示例

官网示例链接

后台返回数据类型

堆叠

实现echarts效果要求的数据类型

这里写图片描述

代码部分

分析:X轴月数据
Y轴申请数量
填充数据为—每个月中测试、正式数据量堆叠图形
HTML

 <div class="applicationSituation">
      <div class="applicationSituationTop">License申请情况</div>
      <div class="applicationSituationMain" id="barAsm"></div>
  </div>

JS

  var barEchartsAsm = echarts.init(document.getElementById('barAsm'));
        barEchartsAsm.setOption({
            tooltip: {
                trigger: 'item',
                formatter: "{a} <br/>{b}: {c}"
            },
            legend: {
                data: []
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
            },
            xAxis:  {
                type: 'category',
                data: []
            },
            yAxis: {
                type: 'value',
            },
            series: [
            ]
        });
        /**licence申请情况 ajax S */
        barEchartsAsm.showLoading();    //数据加载完之前先显示一段简单的loading动画
        var applynames=[];//用来盛放x轴坐标值
        var applycata=[];//用来盛放申请类型
        $.ajax({
            url: $treeBasePath+"/count/queryApplicationuseGroupByMon",
            data: {},
            datatype: "json",
            type: "post",
            async: true,
            success: function (result) {
                console.log("首页licence申请情况==",result);
                if(result.STATUS=="success") {
                    var resdata=result.RESULT.list;
                    var colordata = ['#73ccd6','#77a8e2']
                    var seriesdata = []; //用于拼接到echarts图形里面的数据
                if(resdata.length>0){
                        //取出 x轴显示月份和分类类型
                        $.each(resdata,function(index,element){
                        //去重,没有返回-1 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
                            if(applycata.indexOf(element.applicationuse) == -1){ 
                                applycata.push(element.applicationuse);
                            }
                            if(applynames.indexOf(element.months) == -1){
                                applynames.push(element.months);
                            }
                        });
                        //tmpo 需要往series中拼接的数据
                        $.each(applycata,function (index,elemennt) {
                            var json = {};
                            var tmpo = {
                                name:elemennt,
                                type:'bar',
                                stack: '总量',
                                label:{
                                    normal: {
                                        show: true,
                                        position: 'insideRight'
                                    }
                                },

                            };
                           //循环所有数据,判断每条数据所属类型
                            $.each(resdata,function (index,ele) {
                                if(ele.applicationuse == elemennt){
                                    //如果属于当前类型,给这个x轴赋对应数据
                                    json[ele.months] =ele.num;
                                }
                            });
                            //循环x轴数据,如果这个数据没有对应的x轴,则为0
                            $.each(applynames,function (index,month) {
                                if(!json[month]){
                                    json[month] = 0;
                                }
                            });
                            //相当于排序输出结果
                            var data = [];
                            $.each(applynames,function (index,month) {
                                for(var k in json){
                                    if(k == month){
                                        data.push(json[month]);
                                    }
                                }
                            });
                           tmpo.data = data;
                           seriesdata.push(tmpo);
                        })
                        console.log("applynames--",applynames);
                        console.log("applycata--",applycata);
                        barEchartsAsm.hideLoading();    //隐藏加载动画
                        barEchartsAsm.setOption({
                            color:colordata,
                            legend: {
                                data: applycata
                            },
                            xAxis:  {
                                type: 'category',
                                data: applynames
                            },
                            series: seriesdata
                        })
                    }
                }
            }
        });
        /**licence申请情况 ajax E*/

这里写图片描述

最终展示效果

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值