這個問題的難點在於綜合,分解下來有四個問題
1、多個柱子為一組
2、一個柱子顯示多個數據
3、一個柱子上有多少種數據就顯示多少種顏色
4、鼠標懸浮每個柱子顯示不同數據
以上四個問題,每一個單獨實現都不難,難的在於如何用到一張圖上
來看看效果圖:
每一組三根柱子分別是一班,二班,三班
上代碼:
const labelOption = { show: true, position: 'insideRight' } const tooltipOption = { trigger: 'item', axisPointer: { type: 'shadow' }, formatter: '一班<br />故障:10H 20%<br />運行:20H 20%<br />暫停:30H 20%<br />離線:25H 20%' } const data = { color: ['#F56C6C', '#FFC53A', '#7CA870', '#999999'], legend: { data: ['故障', '暫停', '運行', '離線'] }, tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: [ { type: 'category', data: ['沖壓機床#1', '沖壓機床#2', '沖壓機床#3', '沖壓機床#4'], axisTick: { alignWithLabel: true } } ], yAxis: [ { type: 'value', axisLabel: { formatter: '{value}%' } } ], series: [ { name: '故障', type: 'bar', stack: '一班', label: labelOption, barWidth: '10%', data: [20, 30,40, 60], tooltip: tooltipOption }, { name: '暫停', type: 'bar', stack: '一班', label: labelOption, barWidth: '10%', data: [21, 30,40, 60], tooltip: tooltipOption }, { name: '運行', type: 'bar', stack: '一班', label: labelOption, barWidth: '10%', data: [22, 30,40, 60], tooltip: tooltipOption }, { name: '離線', type: 'bar', stack: '一班', label: labelOption, barWidth: '10%', data: [23, 30,40, 60], tooltip: tooltipOption }, { name: '故障', type: 'bar', stack: '二班', label: labelOption, barWidth: '10%', data: [20, 30,40, 60], tooltip: tooltipOption }, { name: '暫停', type: 'bar', stack: '二班', label: labelOption, barWidth: '10%', data: [21, 30,40, 60], tooltip: tooltipOption }, { name: '運行', type: 'bar', stack: '二班', label: labelOption, barWidth: '10%', data: [22, 30,40, 60], tooltip: tooltipOption }, { name: '離線', type: 'bar', stack: '二班', label: labelOption, barWidth: '10%', data: [23, 30,40, 60], tooltip: tooltipOption }, { name: '故障', type: 'bar', stack: '三班', label: labelOption, barWidth: '10%', data: [20, 30,40, 60], tooltip: tooltipOption }, { name: '暫停', type: 'bar', stack: '三班', label: labelOption, barWidth: '10%', data: [21, 30,40, 60], tooltip: tooltipOption }, { name: '運行', type: 'bar', stack: '三班', label: labelOption, barWidth: '10%', data: [22, 30,40, 60], tooltip: tooltipOption }, { name: '離線', type: 'bar', stack: '三班', label: labelOption, barWidth: '10%', data: [23, 30,40, 60], tooltip: tooltipOption } ] }
重點看stack,stack一樣的數據就會堆疊在一起