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

如何使用ggplot创建堆叠条形图?附数据集与可视化需求

实现堆叠条形图展示列中0和1的占比

嘿,这事儿不难!用Python的pandas和matplotlib就能轻松搞定,我给你写好完整代码和解释,直接抄过去就能运行:

步骤1:导入必要的库

先把需要用到的数据分析和绘图库导入进来:

import pandas as pd
import matplotlib.pyplot as plt

步骤2:加载你的数据集

把你提供的数据集转换成DataFrame格式,方便后续处理:

# 创建数据集
data = {
    'A': [1, 0, 1, 1],
    'B': [1, 1, 0, 0],
    'C': [1, 1, 1, 1]
}
df = pd.DataFrame(data)

步骤3:计算每列0和1的占比

对每列统计0和1的占比,转置后让结构更适配堆叠条形图的需求:

# 计算每列0和1的占比,转置后行是列名,列是0/1的占比
proportion_df = df.apply(lambda x: x.value_counts(normalize=True)).T.fillna(0)

解释:value_counts(normalize=True)会计算每个值在列中的占比,T转置后把列名(A/B/C)变成行索引,fillna(0)是为了处理像C列这种没有0的情况,自动把0的占比设为0,避免报错。

步骤4:绘制堆叠条形图

接下来就是画图了,我还加了数值标签、标题和清晰的配色,让图表更直观:

# 设置一个好看的绘图风格
plt.style.use('seaborn-v0_8')

# 绘制堆叠条形图
ax = proportion_df.plot(kind='bar', stacked=True, figsize=(8, 5), color=['#636EFA', '#EF553B'])

# 添加标题和坐标轴标签
plt.title('Proportion of 0s and 1s in Each Column', fontsize=14)
plt.xlabel('Columns', fontsize=12)
plt.ylabel('Proportion', fontsize=12)

# 设置图例,明确哪个颜色对应0/1
plt.legend(title='Value', loc='upper right', labels=['0', '1'])

# 给每个堆叠部分添加数值标签,显示具体占比
for container in ax.containers:
    ax.bar_label(container, fmt='%.2f', label_type='center')

# 调整布局,防止标签被截断
plt.tight_layout()

# 显示图表
plt.show()

运行这段代码后,你会得到一个并排的堆叠条形图:每一根条形对应A/B/C列,条形的两部分分别代表0和1的占比,还会显示具体的数值(比如A列0的占比是0.25,1的占比是0.75;C列0的占比是0,1的占比是1.0)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:04:43