const list=[ {value: 1048, name: '搜索引擎'}, {value: 735, name: '直接訪問'}, {value: 580, name: '郵件營銷'}, {value: 484, name: '聯盟廣告'}, {value: 300, name: '視頻廣告'} ] const values=list.map(o=>o.value) option = { title: { text: '某站點用戶訪問來源', subtext: '純屬虛構', left: 'center' }, selectedOffset:100, clockwise:true, tooltip: { trigger: 'item' }, legend: { orient: 'vertical', left: 'left', }, series: [ { name: '訪問來源', type: 'pie', // roseType:true, startAngle:152, radius: ['25%', '40%'], data: list, itemStyle:{ // shadowOffsetX: 10, borderWidth:20, borderColor:"pink", decal:{ symbolSize:0.2 } }, emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] }; const sum=list=>list.reduce((a,b)=>a+b,0) var idx =0 var angle=0 setInterval(()=>{ idx++ if(idx>=list.length){ idx=0 } angle=(360*(sum(values.slice(0,idx))+values[idx]/2)/sum(values)+90)%360 console.log(currentAngle,angle) myChart.setOption({ series:[{ startAngle:angle, selectedOffset:0, selectedMode:true, // datasetIndex:idx, select:{ focus: 'series', label:{ show:true, }, itemStyle: { shadowBlur: 10, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }] }); myChart.dispatchAction({ type: 'select', dataIndex:idx, }); },5000) myChart.on('click',(args)=>{ console.log(args,angle) const index=args.dataIndex angle=(360*(sum(values.slice(0,index))+values[index]/2)/sum(values)+90)%360 //點擊后自動旋轉的時候就在指定的扇面后旋轉 idx = index myChart.setOption({ series:[{ startAngle:angle }] }) })