配置项如下
data = [
{
name: '单位供应商',
value: 59,
},
{
name: '个人供应商',
value: 45,
},
];
color = ['#2E6CF6', '#FE9A0D'];
series = [];
for (let i = 0; i < data.length; i++) {
console.log(data[i]);
var dd = [];
// dd[i] = data[i].value;
if (i === 0) {
dd[data.length - 1] = data[i].value;
} else {
dd[0] = data[i].value;
}
series.push({
stack: 'ring',
type: 'bar',
name: data[i].name,
data: dd.map((v) => v || 0),
showBackground: true,
itemStyle: {
color: color[i],
},
backgroundStyle: { color: '#F1F5FF' },
coordinateSystem: 'polar',
roundCap: true,
barWidth: '55%',
barGap: '-100%', // 两环重叠
// radius: ['44%', '47%'],
});
}
option = {
title: {
text: '26,798',
subtext: '供应商总数',
textAlign: 'center',
textVerticalAlign: 'center',
top: '50%',
left: '25%',
textStyle: {
color: '#1B2231',
fontSize: 24,
},
subtextStyle: {
color: '#828282',
fontSize: 20,
},
},
angleAxis: {
max: 100, // 一圈是多少
clockwise: false, // 逆时针
show: false, // 隐藏刻度线
startAngle: 90, // startAngle表示起始角度
axisLine: {
show: false, // 隐藏角度轴(圆心角)
},
axisTick: {
show: false,
},
axisLabel: {
show: false,
},
splitLine: {
show: false, // 隐藏分割线
},
},
radiusAxis: {
type: 'category',
axisLine: {
show: false,
},
axisTick: {
show: false,
},
axisLabel: {
show: false,
},
splitLine: {
show: false,
},
z: 5,
},
polar: {
center: ['25%', '50%'],
radius: ['25%', '50%'], // 总体的最小半径、最大半径
},
tooltip: {
show: true,
formatter: function (e) {
console.log(e);
return `${e.seriesName}<br/>${e.marker} ${e.value} `;
},
},
legend: {
orient: 'vertical',
data: data.map((v) => v.name),
right: '0',
top: '40%',
itemGap: 30,
itemWidth: 8,
itemHeight: 24,
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;
}
}
var arr = ['{a|' + name + '}', '{b|' + target + ' ' + ((target / total) * 100).toFixed(2) + '%} {c|占比}'];
return arr.join('\n');
},
textStyle: {
rich: {
a: {
fontSize: 26,
verticalAlign: 'top',
align: 'left',
padding: [80, 0, 0, 0],
color: '#828282',
},
b: {
fontSize: 36,
align: 'bottom',
padding: [0, 0, 0, 0],
lineHeight: 75,
color: '#1B2231',
},
c: {
fontSize: 20,
align: 'bottom',
padding: [0, 0, 0, 0],
lineHeight: 75,
color: '#828282',
},
},
},
},
series,
};