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

如何基于DataFrame的两个关联列绘制堆叠直方图

按用户维度绘制License类型堆叠计数图

你可以通过交叉统计+pandas内置堆叠绘图的方式快速实现需求,不需要额外复杂处理:

注:你的场景是分类维度的计数堆叠,实际用堆叠柱状图实现即可,直方图适用于连续值分布展示。
预期效果参考

实现步骤

  • 先对原始DataFrame做透视统计,得到每个User对应不同License_type的计数结果
  • 调用pandas绘图接口,指定堆叠参数即可生成目标图表

完整可运行代码

import pandas as pd
import matplotlib.pyplot as plt

# 1. 加载/构造你的数据集
raw_data = [
    ["A1", "U1"], ["A2", "U1"], ["A2", "U1"], ["A2", "U1"], ["A3", "U1"], ["A4", "U1"],
    ["A1", "U2"], ["A2", "U2"], ["A2", "U2"], ["A2", "U2"],
    ["A2", "U3"], ["A4", "U3"]
]
df = pd.DataFrame(raw_data, columns=["License_type", "User"])

# 2. 交叉统计每个用户下各License类型的数量
license_count = pd.crosstab(index=df["User"], columns=df["License_type"])

# 3. 绘制堆叠柱状图
license_count.plot(
    kind="bar",
    stacked=True,
    figsize=(8, 6),
    edgecolor="white" # 可选:给堆叠块加白边,和示例图视觉效果一致
)

# 可选:调整图表标注
plt.ylabel("Count")
plt.xlabel("User")
plt.xticks(rotation=0)
plt.legend(title="License_type", bbox_to_anchor=(1.02, 1), loc="upper left")
plt.tight_layout()
plt.show()

效果说明

运行代码后生成的图表X轴为U1/U2/U3三个用户分类,每个柱子由不同颜色的License类型计数块堆叠组成,数值和你提供的原始数据完全匹配,和参考示例效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:15:31