两组二分类变量的频率条形图制作咨询(附样本数据)
实现不同组别Choice分布频率的条形图
嘿,针对你给出的样本数据,咱们可以用Python的pandas+seaborn快速画出想要的条形图,直观展示Stress组和Control组里Choice(0/1)的分布频率。下面是完整的实现步骤:
步骤1:导入所需库
先把数据分析和可视化需要的工具库导入进来:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt
步骤2:创建样本数据
把你提供的样本数据转换成pandas的DataFrame格式,方便后续统计和绘图:
# 构造样本数据集 data = { 'Participant': [1, 2, 3, 4, 5, 6], 'Group': ['Control', 'Control', 'Control', 'Stress', 'Stress', 'Stress'], 'Choice': [0, 0, 0, 1, 1, 1] } df = pd.DataFrame(data)
步骤3:绘制分布频率条形图
用seaborn的countplot函数,它会自动统计每个组内不同Choice的数量(因为每组样本量固定,数量直接对应频率):
# 设置绘图风格,让图表更美观 sns.set_style("whitegrid") # 创建画布,设置尺寸 plt.figure(figsize=(8, 5)) # 绘制条形图:x轴为组别,用hue区分Choice取值,自动统计每组内的数量 ax = sns.countplot(x='Group', hue='Choice', data=df, palette='Set2') # 添加图表标题和坐标轴标签 plt.title('Choice Distribution by Group', fontsize=14) plt.xlabel('Group', fontsize=12) plt.ylabel('Frequency', fontsize=12) # 给每个条形添加具体数值标签,方便读取 for p in ax.patches: height = p.get_height() ax.text(p.get_x() + p.get_width()/2., height, f'{height}', ha='center', va='bottom') # 显示最终图表 plt.show()
结果说明
运行这段代码后,你会得到一幅清晰的条形图:
- Control组只有Choice=0的条形,高度为3(对应3个样本全部选择0)
- Stress组只有Choice=1的条形,高度为3(对应3个样本全部选择1)
如果后续你的样本数据出现混合分布(比如某组同时存在0和1的选择),这套代码也能自动统计并展示各自的频率。
内容的提问来源于stack exchange,提问作者Chester
相关产品推荐
相关产品推荐

