配置项如下
var spNum = 5,
_max = 100;
var y_data = ['一大队', '二大队', '三大队', '四大队', '五大队', '六大队'];
var _data1 = [10, 15, 10, 13, 15, 11],
_data2 = [19, 5, 40, 33, 15, 51],
_data3 = [21, 55, 10, 13, 35, 11];
var attackSourcesColor = ['#C86E0B', '#1378C0', '#279654', '#6989BB'];
function contains(arr, dst) {
var i = arr.length;
while (i -= 1) {
if (arr[i] == dst) {
return i;
}
}
return false;
}
option = {
backgroundColor: '#021730',
grid: {
containLabel: true,
left: '-2%',
right: 0,
bottom: 0,
top:10
},
tooltip: {
show: true,
backgroundColor: '#fff',
borderColor: '#ddd',
borderWidth: 1,
textStyle: {
color: '#3c3c3c',
fontSize: 16
},
formatter: function(p) {
// console.log(p);
var _arr = p.seriesName.split('/'),
idx = p.seriesIndex; //1,2,3
return '名称:' + p.seriesName + '<br>' + '完成:' + p.value + '<br>' + '占比:' + (p.value / _max * 100).toFixed(0) + '%';
},
extraCssText: 'box-shadow: 0 0 5px rgba(0, 0, 0, 0.1)'
},
xAxis: {
splitNumber: spNum,
interval: _max / spNum,
max: _max,
axisLabel: {
show: false,
formatter: function(v) {
var _v = (v / _max * 100).toFixed(0);
return _v == 0 ? _v : _v + '%';
}
},
axisLine: {
show: false
},
axisTick: {
show: false
},
splitLine: {
show: false
}
},
yAxis: [{
data: y_data,
inverse: true,
axisLabel: {
verticalAlign: "bottom",
align: "left",
padding: [0, 12, 12, 6],
textStyle: {
fontSize: 14,
color: "#ffffff",
fontFamily: "SourceHanSansCN-Regular"
},
rich: {
nt1: {
color: '#fff',
backgroundColor: attackSourcesColor[0],
width: 20,
height: 20,
align: 'center',
borderRadius: 4,
fontFamily: 'DIN',
fontSize: 14
},
nt2: {
color: '#fff',
backgroundColor: attackSourcesColor[1],
width: 20,
height: 20,
align: 'center',
borderRadius: 4,
fontFamily: 'DIN',
fontSize: 14
},
nt3: {
color: '#fff',
backgroundColor: attackSourcesColor[2],
width: 20,
height: 20,
align: 'center',
borderRadius: 4,
fontFamily: 'DIN',
fontSize: 14
},
nt: {
color: '#fff',
backgroundColor: attackSourcesColor[3],
width: 20,
height: 20,
align: 'center',
borderRadius: 4,
fontFamily: 'DIN',
fontSize: 14
},
},
formatter: function(value, index) {
index = contains(y_data, value) + 1
if (index - 1 < 3) {
return [
'{nt' + index + '|' + index + '}' + ' {title' + index + '|' + value + '}'
].join('\n')
} else {
return [
'{nt|' + index + '}' + ' {title|' + value + '}'
].join('\n')
}
}
},
axisLine: {
show: false
},
axisTick: {
show: false
},
splitLine: {
show: false
}
}, {
show: false,
data: y_data,
axisLine: {
show: false
}
}],
dataZoom: [{
type: 'slider',
yAxisIndex: 0,
zoomLock: true,
width: 10,
handleSize: 0,
showDetail: false,
start: 0,
end: 50,
handleIcon: 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
handleSize: '110%',
handleStyle: {
color: "blue",
},
borderColor: "red",
fillerColor:'blue'
}, {
type: 'inside',
id: 'insideY',
yAxisIndex: 0,
start: 0,
end: 50,
zoomOnMouseWheel: false,
moveOnMouseMove: true,
moveOnMouseWheel: true
}],
series: [{
name: '总量',
barWidth: 6,
type: 'bar',
stack: '1',
barGap: '-100%', // 将总计与其他数据重合
label: {
normal: {
show: true,
position: ['102%', '-3'], // 总计数据的位置,
textStyle: {
fontSize: 14,
color: '#18CEFE' //总计数据的颜色
},
},
},
itemStyle: {
color: 'transparent', // 颜色自己设
},
data: [50, 75, 60, 59, 65, 73]
},
{
type: 'bar',
name: '已处置',
stack: '2',
label: {
normal: {
show: false
},
},
legendHoverLink: false,
animationDuration: 1500,
barWidth: 6,
label: {
normal: {
show: false
},
},
itemStyle: {
normal: {
color: '#0096FF',
barBorderRadius: [20, 20, 20, 20],
},
emphasis: {
color: '#0096FF'
}
},
data: _data1
}, {
type: 'bar',
name: '未处置',
stack: '2',
legendHoverLink: false,
barWidth: 6,
label: {
normal: {
show: false
},
},
itemStyle: {
normal: {
color: '#00FFFF',
barBorderRadius: [20, 20, 20, 20],
},
emphasis: {
color: '#00FFFF'
}
},
data: _data2
}, {
type: 'bar',
stack: '2',
name: '处置中',
legendHoverLink: false,
barWidth: 6,
label: {
normal: {
show: false
},
},
itemStyle: {
normal: {
color: '#2CD00E',
barBorderRadius: [20, 20, 20, 20],
},
emphasis: {
color: '#2CD00E'
}
},
data: _data3
}
]
};