var name1 = '广西医科大学' var name2 = '其他大学' var data1 = [{ name: '学院', value: 3079 }, { name: '专业', value: 100079 }, { name: '附属医院', value: 1879 }, { name: 'ESI前1%学科', value: 50000000079 }, { name: '国家重点学科', value: 79 }, { name: '广西一流学科', value: 8879 }, { name: '第四轮评估A/B/C', value: 6079 }, { name: '总在校人数', value: 400079 }, { name: '本科生', value: 300079 }, { name: '硕士研究生', value: 12079 }, { name: '博士生', value: 5079 }, { name: '留学生', value: 20079 }, { name: '高职生', value: 20079 }, { name: '教工', value: 30079 }, { name: '专任教师', value: 10079 }, { name: '高层次人才', value: 1579 }, { name: '国家实验室含重点', value: 3079 }, { name: '国家重大科研项目', value: 2079 }, { name: '生师比', value: 15079 } ]; var data2 = [{ name: '学院', value: 4000 }, { name: '专业', value: 12000 }, { name: '附属医院', value: 3000 }, { name: 'ESI前1%学科', value: 3500 }, { name: '国家重点学科', value: 5000 }, { name: '广西一流学科', value: 7000 }, { name: '第四轮评估A/B/C', value: 5000 }, { name: '总在校人数', value: 450000 }, { name: '本科生', value: 350000 }, { name: '硕士研究生', value: 10000 }, { name: '博士生', value: 2000 }, { name: '留学生', value: 40000 }, { name: '高职生', value: 10000 }, { name: '教工', value: 80 }, { name: '专任教师', value: 40000 }, { name: '高层次人才', value: 10000000 }, { name: '国家实验室含重点', value: 5000 }, { name: '国家重大科研项目', value: 50000 }, { name: '生师比', value: 20000 } ]; let data1New = [] let data2New = [] let largeColorRight = { type: 'linear', x: 1, y: 0, x2: 0, y2: 0, colorStops: [{ offset: 0, color: 'rgba(0, 204, 255, 1)' }, { offset: 1, color: 'rgba(101, 105, 255, 1)' }] } let largeColorLeft = { type: 'linear', x: 0, y: 0, x2: 1, y2: 0, colorStops: [{ offset: 0, color: 'rgba(0, 204, 255, 1)' }, { offset: 1, color: 'rgba(101, 105, 255, 1)' }] } let normalColor = { type: 'linear', x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: 'rgba(0, 204, 255, 0.3)' }, { offset: 1, color: 'rgba(101, 105, 255, 0.3)' }] } data1.map((item, index) => { let isLarge = data1[index].value > data2[index].value data1New.push({ name: data1[index].name, value: data1[index].value, itemStyle: { normal: { color: isLarge ? largeColorRight : normalColor } } }) data2New.push({ name: data2[index].name, value: data2[index].value, itemStyle: { normal: { color: isLarge ? normalColor : largeColorLeft } } }) }) getArrByKey = (data, k) => { let key = k || "value"; let res = []; if (data) { data.forEach(function(t) { res.push(t[key]); }); } return res; }; option = { backgroundColor: '#fff', grid: [{ show: true, left: '2%', top: '0%', bottom: '8%', width: '39%', }, { show: true, left: '50%', top: '0%', bottom: '8%', width: '0%', }, { show: true, right: '2%', top: '0%', bottom: '8%', width: '40%', } ], tooltip: { show: true, formatter: function(params) { return params.seriesName + '<br>' + params.name + ':' + params.value.toFixed(2) / 100 } }, xAxis: [{ type: 'log', inverse: true, axisLine: { show: true }, axisTick: { show: true }, position: 'bottom', axisLabel: { formatter: function(value) { return value / 100; } }, splitLine: { show: true } }, { gridIndex: 1, show: true, }, { gridIndex: 2, show: true, type: 'log', inverse: false, axisLine: { show: true }, axisTick: { show: true }, position: 'bottom', axisLabel: { formatter: function(value) { return value / 100; } }, splitLine: { show: true } } ], yAxis: [{ gridIndex: 0, triggerEvent: true, show: true, inverse: true, data: data1, axisLine: { show: false }, splitLine: { show: false }, axisTick: { show: false }, axisLabel: { show: false } }, { gridIndex: 1, type: 'category', inverse: true, position: 'center', axisLine: { show: false }, axisTick: { show: false }, axisLabel: { show: true, interval: 0, align: 'auto', verticalAlign: 'middle', textStyle: { color: 'rgba(195, 240, 255, 1)', fontSize: 16, align: 'center', }, // 坐标轴刻度标签换行处理 formatter: function(params) { var newParamsName = '' // 最终拼接成的字符串 var paramsNameNumber = params.length // 实际标签的个数 var provideNumber = 16 // 每行能显示的字的个数 var rowNumber = Math.ceil(paramsNameNumber / provideNumber) // 换行的话,需要显示几行,向上取整 if (paramsNameNumber > provideNumber) { /** 循环每一行,p表示行 */ for (var p = 0; p < rowNumber; p++) { var tempStr = '' // 表示每一次截取的字符串 var start = p * provideNumber // 开始截取的位置 var end = start + provideNumber // 结束截取的位置 // 此处特殊处理最后一行的索引值 if (p === rowNumber - 1) { // 最后一次不换行 tempStr = params.substring(start, paramsNameNumber) } else { // 每一次拼接字符串并换行 tempStr = params.substring(start, end) + '\n' } newParamsName += tempStr // 最终拼成的字符串 } } else { //将旧标签的值赋给新标签 newParamsName = params } return newParamsName } }, data: getArrByKey(data1, 'name'), }, { gridIndex: 2, triggerEvent: true, show: true, inverse: true, data: data1, axisLine: { show: false }, splitLine: { show: false }, axisTick: { show: false }, axisLabel: { show: false, } } ], series: [{ name: name1, type: 'bar', gridIndex: 0, showBackground: false, backgroundStyle: { barBorderRadius: 4, }, xAxisIndex: 0, yAxisIndex: 0, data: data1New, barWidth: 20, itemStyle: { normal: { show: true, color: 'rgba(59, 126, 170, 1)', barBorderRadius: 4 }, }, label: { show: false, } }, { name: name2, type: 'bar', xAxisIndex: 2, yAxisIndex: 2, gridIndex: 2, showBackground: false, backgroundStyle: { barBorderRadius: 4, }, data: data2New, barWidth: 20, itemStyle: { normal: { show: true, color: 'rgba(59, 126, 170, 1)', barBorderRadius: 4 }, }, label: { show: false } } ] };