双X轴的Echarts图

场景

如下图所示,需要实现一个带层级关系的双x轴的柱状图,第一个x轴显示子级别的信息,第二个x轴显示父级关系。
在这里插入图片描述
上面的图很好理解,就是一个正常的堆叠柱状图,底下x轴根据层级关系显示分组信息。

解决方法

以第一个x轴为界限,把图分为上下两个网格。上面的网格为常规图,x轴作为子级;下面的网格为x轴的父级,绘制柱状图,每一根柱子设置相同高度,柱子的宽度设置为子级数量占总数的百分比。

数据结构:

[{
    name: 'Group1',
    children: [
        { name: 'Child1-1', count: 10, num: 20 },
        { name: 'Child1-2', count: 15, num: 22 }
    ]
}, {
    name: 'Group2',
    children: [
        { name: 'Child2-1', count: 13, num: 22 }
    ]
}, {
    name: 'Group3',
    children: [
        { name: 'Child3-1', count: 12, num: 24 },
        { name: 'Child3-2', count: 19, num: 28 }
    ]
}]

Grid配置:

[{
    top: 30,
    right: 10,
    left: 60,
    bottom: 60
}, {
    right: 10,
    left: 60,
    height: 50,   // height + bottom = 第一个grid的bottom
    bottom: 10,
    tooltip: {
    	show: false
    }
}]

父级series配置:

{
    type: 'bar',
    data: [{
        name: item.name,    // 父级x轴显示名称 
        value: 1
    }],
    label: {
        show: true,
        position: 'inside',
        formatter: '{b}',
        offset: [0, 10],
        textStyle: {
            color: '#595959'
        }
    },
    barGap: 0,
    barWidth: `${item.children.length / total * 100}%`,   // 设置宽度
    itemStyle: {
        opacity: 0.6,
        color: 'transparent',
        borderColor: '#cccccc',
    },
    labelLine: {
        show: true
    },
    xAxisIndex: 1,
    yAxisIndex: 1,
    animation: false
}

一个小tips:因为父级X轴需要显示分割线,这里是用border实现的,但是border无法设置每一边的宽度和颜色,所以用当前Grid的axisLine盖住了bottom border

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值