const list = [ { value: 140, name: '数据 1' },{ value: 88, name: '数据 2' }, { value: 58, name: '数据 3' }, { value: 20, name: '数据 4' }, { value: 18, name: '数据 5' }, { value: 16, name: '数据 6' }, { value: 12, name: '数据 7' }, { value: 8, name: '数据 8' }]; const total = list.reduce((a, b) => { return (typeof a === 'number' ? a : a.value) + b.value; }) let series = [], startAngle = 90; for (let i = 0; i < list.length; i++) { let item = list[i], radius = 80 - i * 5 series.push({ name: '', type: 'pie', startAngle, // clockwise: false, //逆时针 radius: [0, radius + '%'], center: ['45%', '50%'], itemStyle: { borderRadius: 2 }, label: { show: false, }, data: [item, { value: total - item.value, name: '', itemStyle: { color: 'rgba(0,0,0,0)' }, label: { show: false, } }] }) startAngle -= parseInt(item.value / total * 360); } option = { color:['#00EBFC','#1F6CFE','#BF41FF','#FF63D3','#FF5858','#FFA44E','#FFFF41','#75FD43','#D6A3D3'], legend: { top: 'center', right: '5%', }, series, };