let img1 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAh1BMVEUAAAC+6nm+6nq28na+6nq/63nD7Ha+6nq+6nq+63q/6Xq+63u/6nqh/2u+6nq+6nq/6nq+6nq/63q/6Xq96nm97X656H++63q/63m+6Xq+6nq/6nq/6nq/63q+6ni97Hm+6Hy+6nq+6nq96Xq+6nm+6nq/6nq+6nq/6nm/6nq+6ny/6Xu+6nrEFxhlAAAALHRSTlMAqt0G0kwN9vDXIqF2AuvMtoV9LRwRC5Rj+cfBvXBHNBXlmYxqXFP4jlZDOrUCCSwAAAEoSURBVDjL3dFZtoIwDAbgH6hCoWUUEUHBecr+13eptHhQcQH3eyFJc2jTQsm3eJMVEY9XjkmF62MkJX5NrZItdO6werR+pI3sPj7jS1150AkvrZf0wcJLTW0f5his3LmODrap5bsAg0NkojM5QGIpnKyBHfZfHzfVkLmeyhjFpqFS4ZoKoGDPLen8PFAy7BcWWLLIge+K/oSeuoZNmUE7URJ0tcbumhQnYt28MlrL1xzEiorqVue+p2ZoyuNw024cV8FMwpjRSo3n6atd8rWDseTSdHXb6rMg9PFG1nYO3M/6Kbb40O5iORwgwRePUj/MnFcOvtnoH1vhAp/Miun7ZIZrLikmZe41t2uJaSdiuxa/7OmOn2Y0//cNQoiAUiFumMDtXjCq/gEGGBP31YkXRgAAAABJRU5ErkJggg=='; let img2 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAolBMVEUAAADz6ir16yr06yr06ir16ir16yr07Cn06yn06in16yr06Sr16Sn06yr06ir06yn06ir16irv7Cj06ir16ir06yn06yn16in16in16yn06ir16ir37Cr//y/16yn06yr16ir06ir06in06in06Sny6ir26Sr16in06in06inz6irz6yn27Cr16yj06ir06ir06in26Sn06CL16in26ir06ipiqh6XAAAANXRSTlMA3bz77NHnKrn2lfn41IxvVEgP8NzHs6p5ZF8wHQTk4cOedFxEPCIY2JqCPzUzpJCIUAuzbO5G2rgAAAE7SURBVDjLrZLZcoIwGIV/IChR2XcFQcR9qbU97/9qrYQSRjpe+d1kMvMlOTkJvRlbVY3NKyHgCj5eChG9EG4A9gSAu/8LKjtgRGBXVDTECRTOSPsV9AxMMcfPwkRTtZkQxmAh5gNhSqwTjMXbhUpRfG3TEyaPnAspRDw2kOjLTjD5l4q1FOIlUaGr5p8QwqINHCmsfKIUo07gfkYuXOonJLLA7dnyAv2AaU30iZMULOSPMvdo0KItEa1xlsIRXjOeLbU0vjN6kKLXdoLd8O9g+zy5p3HAwcxJ3V8ktzsxsGhlXUsNpSeOFbSB7qxw82bmJdpKBG8RV8pwoBavKJurd4hSYoT2Zedt69tIc5ryOkSteVK0PYS1qF9yaR9mMa+OtiPSRwFJxkiHX1gnSYa9+owfkiQ3lCEVvYkfYd4lVwfZiRoAAAAASUVORK5CYII='; // 数据及颜色设置 let bgColor = '#051234'; let scale = 1; let echartData = [{ name: 'A类', value: 30, unit: '元', detail: [{name: 'TypeA', value: 22},{name: 'TypeB', value: 8}] }, { name: 'B类', value: 20, unit: '元', detail: [{name: 'TypeA', value: 12},{name: 'TypeB', value: 8}] }, { name: 'C类', value: 30, unit: '元', detail: [{name: 'TypeA', value: 12},{name: 'TypeB', value: 18}] }, { name: 'D类', value: 20, unit: '元', detail: [{name: 'TypeA', value: 3},{name: 'TypeB', value: 17}] } ]; let total = echartData.reduce((a, b) => { return a + b.value * 1 }, 0) option = { backgroundColor: bgColor, color: ['#2EB2FA', '#43CC31', '#FFC145', '#FFA8A8'], title: [{ text: '异常分布情况', x: 'center', y: 20, textStyle: { fontWeight: 'normal', fontSize: 24 * scale, color: "#fff", } },{ text: '分类统计', x: 'center', y: 'center', textStyle: { fontWeight: 'normal', fontSize: 20 * scale, color: "#ccc", } }], tooltip: { show: false }, legend: { icon: 'square', itemWidth: 12 * scale, itemGap: 25, top: 20, right: 30, textStyle: { color: '#fff' }, data: [{ name: 'TypeA', icon: 'image://'+img1 }, { name: 'TypeB', icon: 'image://'+img2 }] }, series: [{ type: 'pie', name: 'TypeB', // 内层细圆环2 radius: ['45%', '46%'], hoverAnimation: false, clockWise: false, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0.05, color: 'rgba(0,117,255, 1)' }, { offset: 0.5, color: 'rgba(0,117,255, 0.1)' }, { offset: 1, color: 'rgba(0,117,255, 1)' }]), } }, label: { show: false }, data: [100] }, { type: 'pie', name: 'TypeA', // 外层圆环1(用于遮挡labelLine) radius: ['56%', '60%'], hoverAnimation: false, clockWise: false, itemStyle: { normal: { color: bgColor, } }, label: { show: false }, data: [100] }, { type: 'pie', name: 'TypeB', // 最外层细圆环 hoverAnimation: false, clockWise: false, radius: ['60%', '61%'], itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0.05, color: 'rgba(0,117,255, 1)' }, { offset: 0.5, color: 'rgba(0,117,255, 0.1)' }, { offset: 1, color: 'rgba(0,117,255, 1)' }]), } }, label: { show: false }, data: [100] }, { name: '饼图内容区', type: 'pie', clockWise: false, radius: ['50%', '56%'], hoverAnimation: false, data: echartData, label: { normal: { formatter: function(params, ticket, callback) { return '{normal|' + params.name + '}\n{A|}{value|' + params.data.detail[0].value + '个}\n{B|}{value|' + params.data.detail[1].value + '个}'; }, padding: [0, -80], rich: { normal: { color: '#fff', fontSize: 14 * scale, padding: [20, 4], align: 'left' }, value: { color: '#fff', align: 'left', fontSize: 14 * scale, padding: [2, 4], }, A: { width: 14, height: 14, align: 'left', backgroundColor: { image: img1 } }, B: { width: 14, height: 14, align: 'left', backgroundColor: { image: img2 } } } } }, labelLine: { length: 30, length2: 100 } } ] };