请教:用echarts绘条形图,数据分成两组,想绘制上下两个堆积条形图,如下图所示,上面的第一组数据绘制正确,但第二组数据不是从y=0 开始绘制,而是把第一组的堆积值做为起点开始绘制的,结果下面的条形图就悬浮起来了,这样不对,怎样改才能让两组数据分别独立绘制堆积图呢?谢谢。
数据及代码:
var data = {
area: ['A', 'B', 'C', 'D', 'E', 'H', 'I', 'J', 'K'],
legend: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'],
data: [
[1320, 1302, 901, 634, 1390, 1330, 1320, 1000, 500],
[320, 302, 301, 334, 390, 330, 320, 100, 50],
[320, 302, 301, 334, 390, 330, 320, 100, 50],
[320, 302, 301, 334, 390, 330, 320, 100, 50],
[320, 302, 301, 334, 390, 330, 320, 100, 50],
[320, 302, 301, 334, 390, 330, 320, 100, 50],
[320, 302, 301, 334, 390, 330, 320, 100, 50],
[320, 302, 301, 334, 390, 330, 320, 100, 50],
[320, 302, 301, 334, 390, 330, 320, 100, 50],
[320, 302, 301, 334, 390, 330, 320, 100, 50],
[320, 302, 301, 334, 390, 330, 320, 100, 50],
]
}
//按列选择数据
var data1 = data.data.map((v1, i1) => v1.filter((v2, i2) => [1,2,3,4].indexOf(i2) >= 0));
console.log(data1);
var data2 = data.data.map((v1, i1) => v1.filter((v2, i2) => [5,6,7,8].indexOf(i2) >= 0));
console.log(data2);
option = {
grid: [{ bottom: '55%' }, { top: '55%' }],
xAxis: [
{ type: 'category', gridIndex: 0 ,data: data.area},
{ type: 'category', gridIndex: 1 ,data: data.area}],
yAxis: [{type: 'value', gridIndex: 0 }, {type: 'value', gridIndex: 1 }],
series: []//.concat(series1)
};
for (var i = 0; i < data.legend.length; i++) {
option.series.push({
name: data.legend[i],
type: 'bar',
gridIndex: 0,
xAxisIndex: 0,
yAxisIndex: 0,
stack: '总量',
barWidth: '35%',
label: {
show: false,
position: 'insideRight'
},
data: data1[i],
});
}
for (var j = 0; j < data.legend.length; j++) {
option.series.push({
name: data.legend[j],
type: 'bar',
gridIndex: 1,
xAxisIndex: 1,
yAxisIndex: 1,
stack: '总量',
barWidth: '35%',
label: {
show: false,
position: 'insideRight'
},
data: data2[j],
});
}
堆积图是靠stack去分类的,你stack都取一样的名字,可不就当成同一类了,你把下面循环里的stack换成别的就行了
