var getname = ['本校', '省内外校', '省外院校', '境外院校','测试','测试','测试'] var getvalue = [54, 31, 5, 10,0,0,0] var sumvalue=sum(getvalue) var data = [] for (var i = 0; i < getname.length; i++) { data.push({ name: getname[i], value: getvalue[i], }) } function sum(getvalue) { var s = 0; for (var i=getvalue.length-1; i>=0; i--) { s += getvalue[i]; } return s; } var wordLength = (value) => { var ret = ""; //拼接加\n返回的类目项 var maxLength = 4; //每项显示文字个数 var valLength = value.length; //X轴类目项的文字个数 var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数 if (rowN > 1) //如果类目项的文字大于3, { for (var i = 0; i < rowN; i++) { var temp = ""; //每次截取的字符串 var start = i * maxLength; //开始截取的位置 var end = start + maxLength; //结束截取的位置 if (end >= valLength) { temp = value.substring(start, end); } else { temp = value.substring(start, end) + "\n"; } ret += temp; //凭借最终的字符串 } return ret; } else { return value; } } var colorList = [{ type: 'linear', x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#7BB1FF' // 0% 处的颜色 }, { offset: 1, color: '#4185FF' // 100% 处的颜色 }], }, { type: 'linear', x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#00CFBF' // 0% 处的颜色 }, { offset: 1, color: '#05C398' // 100% 处的颜色 }], }] var opacityList = [1, 1, 0.85, 0.85, 0.65, 0.65, 0.45, 0.45, 0.25, 0.25] var offsetData = [ [50, 50], [75, 75], [70, 23], [20, 45], [30, 70], [40, 15], [80, 45] ]; var datas = []; for (var i = 0; i < data.length; i++) { var item = data[i]; if(item.name==='测试'){ var colortxt='transparent'; var size=35 }else{ var colortxt='#fff'; var size=50 } datas.push({ name: '{value|' + item.value + "%}" + "\n" + '{name|' + wordLength(item.name) + '}', value: offsetData[i], symbolSize: item.value/sumvalue*200+size, label: { normal: { textStyle: { fontSize: 14, lineHeight: 20 }, rich: { name: { color: colortxt, fontSize: 15, fontWeight: '400', lineHeight: 20, align: 'center', }, value: { color: colortxt, fontSize: 18, fontWeight: 'bold', lineHeight: 30, align: 'center', }, } } }, itemStyle: { normal: { color: colorList[i % 2], opacity: opacityList[i], }, } }); } var option = { grid: { show: false, top: 10, bottom: 10 }, xAxis: [{ gridIndex: 0, type: "value", show: false, min: 0, max: 100, nameLocation: "middle", nameGap: 5 }], yAxis: [{ gridIndex: 0, min: 0, show: false, max: 100, nameLocation: "middle", nameGap: 30 }], series: [{ type: "scatter", symbol: "circle", symbolSize: 120, label: { normal: { show: true, formatter: "{b}", color: "#fff", textStyle: { fontSize: "20" } } }, itemStyle: { normal: { color: "#00acea" } }, data: datas }] };