echarts嵌套饼图

1:静态页面效果

var myChart1 = echarts.init(document.getElementById('_top'));
option1 = {
    tooltip: {
        trigger: 'item',
        formatter: "{a} <br/>{b}: {c} ({d}%)"
    },
    legend: {
         orient: 'vertical',
         left: 'left',
         data: ['学生','教师','家长','学生(小学)','学生(初中)']
    },
    series: [
        {
            name:'学段分类统计',
            type: 'pie',
            radius: ['10%', '35%'],
            label: {
                normal: {
                    position: 'inner'
                }
            },//扇形区域内显示文字
            data:[
                {value:25, name:'学生'},
                {value:35, name:'教师'},
                {value:45, name:'家长'}
            ],
            color: ['#10EFE0','#EF42A4','#FF8F03']
        },
        {
            name:'角色分类统计',
            type: 'pie',
            radius: ['35%', '75%'],
            label: {
                normal: {
                    position: 'inner'
                }
            },
            labelLine: {
                normal: {
                    show: true,
                }
            },
            data:[
                { value: 10, name: '学生(小学)' },
                { value: 10, name: '学生(初中)' },
                { value: 5, name: '学生(高中)' },
                { value: 15, name: '教师(小学)' },
                { value: 15, name: '教师(初中)' },
                { value: 5, name: '教师(高中)' },
                { value: 20, name: '家长(小学)' },
                { value: 10, name: '家长(初中)' },
                { value: 15, name: '家长(高中)' },

            ],
            color:['#51CEC6','#6AE2D9','#96F5EF','#EF87C2','#F79DD0','#FFC8E7','#FFB703','#FFCD50','#FFE296']
        },

    ],

};
myChart1.setOption(option1);

2:封装JS

function EdiObjValue(obj, target, editName) {
    for (var prop in obj) {
      if (obj.hasOwnProperty(prop)) {
        if (obj[prop] == target) {
          obj[prop] = editName;
        }
        if (Object.prototype.toString.call(obj[prop]) == '[object Object]') {
          EdiObjValue(obj[prop], target, editName)
        } else if (Object.prototype.toString.call(obj[prop]) == '[object Array]') {
          obj[prop].map(item => {
            EdiObjValue(item, target, editName)
          })
        }
      }
    }
  }


 w.multiChart = function (dom, data) {
    var dom = document.getElementById(dom);
    var chart = echarts.init(dom);

    option = {
    		tooltip: {
    			trigger: 'item',
    			formatter: "{a} <br/>{b}: {c} ({d}%)"
    		},
    		legend: {
    	         orient: 'vertical',
    	         left: 'left',
    	         data: 'xAxisData'
    	    },
    		series: [
    			{
    				name:'shopName',
    				type: 'pie',
    				radius: ['10%', '35%'],
    				label: {
    					normal: {
    						position: 'inner'
    					}
    				},//扇形区域内显示文字
    				data:'seriesData1',
    				color: ['#10EFE0','#EF42A4','#FF8F03']
    			},
    			{
    				name:'shopName',
    				type: 'pie',
    				radius: ['35%', '75%'],
    				label: {
    					normal: {
    						position: 'inner'
    					}
    				},
    				labelLine: {
    					normal: {
    						show: true,
    					}
    				},
    				data:'seriesData2',
    				color:['#51CEC6','#6AE2D9','#96F5EF','#EF87C2','#F79DD0','#FFC8E7','#FFB703','#FFCD50','#FFE296']
    			},

    		],

    };

    Object.keys(data).forEach(item => {
      EdiObjValue(option, item, data[item])
    })
    chart.setOption(option, true);
  }

3:后台动态获取数据

$.ajax({
			type : 'post',
			url: baseUrl + "BIAction/buslineAttendance",//调用后台接口获取折线图上的数据
            dataType: "jsonp",
            success:function(result){
             var options = {
               		 	shopName:result.shopName,
                        xAxisData: result.names,
                        seriesData1: result.innerMapList,//内层  
                        seriesData2: result.extMapList //外层
                       
                }    
                multiChart(id,options)
                return options  	
        }
    })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值