配置项如下
var data = [{
name: '杭州市',
value: (Math.random() * 100).toFixed(2)
},
{
name: '宁波市',
value: (Math.random() * 100).toFixed(2)
},
{
name: '温州市',
value: (Math.random() * 100).toFixed(2)
},
{
name: '嘉兴市',
value: (Math.random() * 100).toFixed(2)
},
{
name: '湖州市',
value: (Math.random() * 100).toFixed(2)
},
{
name: '绍兴市',
value: (Math.random() * 100).toFixed(2)
},
{
name: '金华市',
value: (Math.random() * 100).toFixed(2)
},
{
name: '衢州市',
value: (Math.random() * 100).toFixed(2)
},
{
name: '舟山市',
value: (Math.random() * 100).toFixed(2)
},
{
name: '台州市',
value: (Math.random() * 100).toFixed(2)
},
{
name: '丽水市',
value: (Math.random() * 100).toFixed(2)
}
]
data = data.map((item) => {
item.pm = i + 1;
return item
})
var data = data.sort((a, b) => b.value - a.value);
var max = Math.max(...data.map(item => item.value));
var len = Math.ceil(data.length / 2);
var otherLen = data.length - len;
var datas = [data.slice(0, len), data.slice(len)]
var xAxis = [],
yAxis = [],
series = [];
var startIndex;
for (var i = 0; i < 2; i++) {
startIndex = (i === 0 ? 0 : len);
xAxis.push({
show: false,
type: 'value',
gridIndex: i,
max: max,
axisLine: {
show: false
},
axisTick: {
show: false
},
splitLine: {
show: false
}
})
yAxis.push({
type: 'category',
gridIndex: i,
axisLine: {
show: false
},
axisLabel: {
verticalAlign: 'bottom',
align: 'left',
padding: [0, 0, 15, 10],
color: '#fff',
fontSize: '16',
formatter: (p, index) => {
var sIndex = data.map(item => item.name).indexOf(p);
return '{index|' + moreThanTen(sIndex + 1) + '} ' + p;
},
rich: {
index: {
color: '#26BCFF',
fontSize: '26',
fontWeight: 'bold'
}
}
},
axisTick: {
show: false
},
inverse: true,
data: datas[i].map(item => item.name)
})
yAxis.push({
type: 'category',
gridIndex: i,
axisLine: {
show: false
},
axisLabel: {
verticalAlign: 'bottom',
align: 'right',
padding: [0, 0, 15, 10],
textStyle: {
color: '#fff',
fontSize: '26',
},
formatter: params => {
return '{num|' + params + '}%'
},
rich: {
num: {
color: '#FF982E',
fontSize: '26',
fontWeight: 'bold'
}
}
},
axisTick: {
show: false
},
inverse: true,
data: datas[i].map(item => item.value)
})
series.push({
type: 'bar',
barWidth: 10,
xAxisIndex: i,
yAxisIndex: [2 * i, 2 * (i + 1) - 1],
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{
offset: 0,
color: '#72AEFF' // 0% 处的颜色
}, {
offset: 1,
color: '#0084FF' // 100% 处的颜色
}], false),
barBorderRadius: 5
},
zlevel: 1,
data: datas[i]
})
series.push({
type: 'bar',
barWidth: 10,
xAxisIndex: i,
yAxisIndex: [2 * i, 2 * (i + 1) - 1],
itemStyle: {
color: '#263877',
barBorderRadius: 5
},
barGap: '-100%',
zlevel: 0,
data: (new Array(datas[i].length)).fill(max)
})
}
option = {
legend: {
show: false
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: [{
x: '5%',
y: '5%',
width: '40%',
height: '100%'
// containLabel: true
}, {
x2: '5%',
y: '5%',
left: '50%',
width: '40%',
height: otherLen / len * 100 + '%'
// containLabel: true
}],
yAxis: yAxis,
xAxis: xAxis,
series: series
}
function moreThanTen(num) {
return num >= 10 ? num : '0' + num;
}