You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为每个x轴值创建含3个不同列的堆叠柱状图

堆叠柱状图需求实现方案

这个需求完全可以实现,以下是三类常用工具的具体实现方法:

Excel 实现步骤

  • 首先整理数据源:列字段按顺序设置为「工作流名称」、「月份」、「Reschedule数值」、「Cancel数值」,每一行对应单个工作流单月的两个指标数据
  • 选中全部数据源,插入簇状柱形图
  • 选中图表中任意一个数据系列,右键选择「更改系列图表类型」,将Reschedule和Cancel两个数据系列均设置为「堆叠柱形图」,确认配置后即可得到符合要求的图表结构

Python 实现(Matplotlib 为例)

你可以直接使用以下示例代码,替换其中的数据源为你的实际数值即可生成对应图表:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# 替换为你的实际数据
raw_data = {
    "workstream": ["工作流A", "工作流A", "工作流A", "工作流B", "工作流B", "工作流B", "工作流C", "工作流C", "工作流C"],
    "month": ["1月", "2月", "3月", "1月", "2月", "3月", "1月", "2月", "3月"],
    "reschedule": [12, 9, 14, 7, 11, 8, 15, 6, 10],
    "cancel": [5, 7, 3, 6, 4, 8, 2, 9, 5]
}
df = pd.DataFrame(raw_data)

# 基础参数配置
ws_list = df["workstream"].unique()
month_list = df["month"].unique()
ws_count = len(ws_list)
month_count = len(month_list)
bar_width = 0.25
x_axis = np.arange(ws_count)

# 按月份绘制堆叠柱
for idx, month in enumerate(month_list):
    month_filter = df["month"] == month
    plt.bar(x_axis + idx*bar_width, df[month_filter]["reschedule"], width=bar_width, label=f"{month} 改期")
    plt.bar(x_axis + idx*bar_width, df[month_filter]["cancel"], width=bar_width, bottom=df[month_filter]["reschedule"], label=f"{month} 取消")

# 坐标轴配置
plt.xticks(x_axis + bar_width*(month_count-1)/2, ws_list)
plt.xlabel("工作流(Workstreams)")
plt.ylabel("业务数量")
plt.legend()
plt.show()

Tableau 实现步骤

  • 将「工作流」字段拖入列功能区,再将「月份」字段拖入列功能区,放在工作流字段的右侧
  • 先将「Reschedule」字段拖入行功能区,再将「Cancel」字段拖入行功能区的「Reschedule」数值上,系统会自动触发指标堆叠
  • 标记卡选择「条形图」,调整标记卡的颜色配置区分改期、取消两个指标即可

内容的提问来源于stack exchange,提问作者andie_6655321

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:15:03