堆叠条形图:横向部分与整体分解

对于分析类别标题较长的项目中的组成部分分解,堆叠条形图是理想的选择。通过将数据段沿Y轴从左到右水平堆叠,这种可视化方式在保持长标签清晰度的同时,展示了整体类别总和以及内部比例分解。它在调查人口统计结果、按部门划分的项目资源分配或多渠道转化流程中表现尤为出色。

堆叠水平条形的原理

创建水平堆叠图表需要使用与堆叠柱状图相同的堆叠属性,并与基于类别的Y轴配合使用。当多个type: 'bar'系列在水平方向上共享相同的堆叠键时,渲染引擎会沿X轴从左到右累积数值。

1. 基础设置

要构建一个基本的堆叠条形图,请设置yAxistype: 'category', xAxistype: 'value',并将一个匹配的堆叠字符串分配给每个系列:

option = {
    tooltip: {
        trigger: 'axis',
        axisPointer: { type: 'shadow' }
    },
    legend: {
        data: ['工程', '产品', '设计', '市场']
    },
    xAxis: {
        type: 'value'
    },
    yAxis: {
        type: 'category',
        data: ['项目阿尔法', '项目贝塔', '项目伽马', '项目德尔塔']
    },
    series: [
        {
            name: '工程',
            type: 'bar',
            stack: '分配',
            data: [320, 302, 301, 334]
        },
        {
            name: '产品',
            type: 'bar',
            stack: '分配',
            data: [120, 132, 101, 134]
        },
        {
            name: '设计',
            type: 'bar',
            stack: '分配',
            data: [220, 182, 191, 234]
        },
        {
            name: '市场',
            type: 'bar',
            stack: '分配',
            data: [150, 212, 201, 154]
        }
    ]
};

 

高级结构技术

堆叠的水平条形图可以配置为进行绝对数量比较,或进行归一化以显示跨类别的百分比比率。

1. 100% 归一化水平条形图

为了评估长类别之间的相对比率而非绝对数量,请将你的系列数据归一化,使每行的总和为100%:

option = {
    tooltip: {
        trigger: 'axis',
        axisPointer: { type: 'shadow' },
        formatter: '{b}
{a0}: {c0}%
{a1}: {c1}%
{a2}: {c2}%'
    },
    legend: {
        data: ['满意', '中立', '不满意']
    },
    xAxis: {
        type: 'value',
        min: 0,
        max: 100,
        axisLabel: { formatter: '{value}%' }
    },
    yAxis: {
        type: 'category',
        data: [
            '企业客户成功',
            '中型市场支持服务',
            '自助式入职' 
        ]
    },
    series: [
        {
            name: '满意',
            type: 'bar',
            stack: 'feedback',
            data: [75, 60, 45]
        },
        {
            name: '中立',
            type: 'bar',
            stack: 'feedback',
            data: [18, 25, 35]
        },
        {
            name: '不满意',
            type: 'bar',
            stack: 'feedback',
            data: [7, 15, 20]
        }
    ]
};

 

布局与样式的精细调整

清晰的视觉边界和圆润的外端设计使水平堆叠条形图呈现出精致、现代的视觉感受。

1. 段间分离与外端圆角

应用细的垂直边框线以区分内部段,且将圆角样式限制在右侧最后一个段上:

option = {
    grid: {
        left: '15%',
        right: '10%',
        containLabel: true
    },
    xAxis: {
        type: 'value'
    },
    yAxis: {
        type: 'category',
        data: ['Q1 预算', 'Q2 预算', 'Q3 预算', 'Q4 预算']
    },
    series: [
        {
            name: '固定成本',
            type: 'bar',
            stack: 'budget',
            data: [400, 420, 410, 430],
            itemStyle: {
                color: '#5470c6',
                borderColor: '#ffffff',
                borderWidth: 1
            }
        },
        {
            name: '可变成本',
            type: 'bar',
            stack: 'budget',
            data: [200, 250, 220, 280],
            itemStyle: {
                color: '#91cc75',
                borderColor: '#ffffff',
                borderWidth: 1
            }
        },
        {
            name: '可支配支出',
            type: 'bar',
            stack: 'budget',
            data: [100, 150, 130, 190],
            itemStyle: {
                color: '#fac858',
                borderColor: '#ffffff',
                borderWidth: 1,
                borderRadius: [0, 6, 6, 0] // 右侧端帽的圆角
            }
        }
    ]
};

 

战略最佳实践

  • 第一段基准:最靠近 Y 轴基准线的段在跨类别比较时最为直观。始终将最关键的组件作为第一个系列对象放置。
  • 限制堆叠组件数量:每根条形图的堆叠段总数应控制在 5 个或更少,以确保视觉分析清晰,避免信息过载。
  • 条形内文本标签: 对于具有宽段的水平堆叠条形图,建议启用label: { show: true, position: 'inside' }以使各个段的数值可读,而无需依赖悬停提示。
滚动至顶部