关于 ECharts 绘图问题

请教:用echarts绘条形图,数据分成两组,想绘制上下两个堆积条形图,如下图所示,上面的第一组数据绘制正确,但第二组数据不是从y=0 开始绘制,而是把第一组的堆积值做为起点开始绘制的,结果下面的条形图就悬浮起来了,这样不对,怎样改才能让两组数据分别独立绘制堆积图呢?谢谢。

ECharts 绘图问题

数据及代码:


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],
    });
}
阅读 1.4k
1 个回答

堆积图是靠stack去分类的,你stack都取一样的名字,可不就当成同一类了,你把下面循环里的stack换成别的就行了
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题