美化饼图
配置项如下
var trafficWay = [
{value: 735, name: '国家级'},
{value: 580, name: '省级'},
{value: 484, name: '市级'}
];
var data = [];
var data2 = [];
var color=['#00ffd5','#0083ff','#e0b808'];
for (var i = 0; i < trafficWay.length; i++) {
data.push({
value: trafficWay[i].value,
name: trafficWay[i].name,
itemStyle: {
normal: {
borderWidth: 5,
shadowBlur: 20,
borderColor:color[i],
shadowColor: color[i]
}
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '40',
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
});
}
for (var i = 0; i < 4; i++) {
data2.push({
value: 100,
itemStyle: {
normal: {
label: {
show: false
},
labelLine: {
show: false
},
color: '#77b5b0'
}
}
}, {
value: 30,
name: '',
itemStyle: {
normal: {
label: {
show: false
},
labelLine: {
show: false
},
color: 'rgba(0, 0, 0, 0)'
}
}
});
}
var seriesOption = [{
name: '',
type: 'pie',
radius: ['65%', '70%'],
center:['35%', '50%'],
itemStyle: {
normal: {
label: {
show: false,
position: 'center',
textStyle: {
rich: {
numText: {
color: '#0ff8e5',
fontSize: 40,
fontWeight: 'bold',
width: 30,
textAlign: 'center'
},
text: {
color: '#ccc',
fontSize: 18,
padding: [5, 0, 0, 0],
width: 30,
textAlign: 'center'
}
}
},
formatter: function(params){
console.log(params);
// for (var i = 0; i < data.length; i++) {
// if (data[i].name == name) {
// target = data[i].value;
// title = data[i].label
// index = i < 6 ? i : 5
// }
// }
return `{numText| ${params.percent}%}\n{text| ${params.name}}`
}
},
emphasis: {
label: {
show: true,
fontSize: '20',
fontWeight: 'bold',
}
},
labelLine: {
show: false
}
}
},
data: data
},{
name: '访问来源',
type: 'pie',
radius: ['52%', '54%'],
center:['35%', '50%'],
hoverAnimation: false,
// avoidLabelOverlap: false,
label: {
show: false
},
labelLine: {
show: false
},
data: data2
}];
option = {
color : color,
legend: {
icon: "circle",
orient: 'horizontal',
right: 10,
// top: 'center',
width: '100px',
align: 'left',
textStyle: {
color: "#fff",
fontSize:14,
},
itemGap: 15,
formatter: function(name) {
var total = 0;
var target;
for (var i = 0, l = data.length; i < l; i++) {
total += data[i].value;
if (data[i].name == name) {
target = data[i].value;
}
}
return (
name +
" " +
target +
" | " +
((target / total) * 100).toFixed(2) +
"%"
);
},
},
toolbox: {
show: false
},
series: seriesOption
}