如何用Python绘制指定类别(A=0)的单一直方图
绘制特定分组的单一直方图解决方案
没问题,你之前用hist(by=...)生成多组直方图,是因为它会按列A的所有唯一值自动分组绘制。要只画列A等于某个特定值(比如A=0)时列B的直方图,核心思路就是先筛选出对应的数据子集,再单独绘制,操作很简单!
步骤1:先构造你的数据集(方便直接测试)
先把你给出的两列数据转换成pandas的DataFrame:
import pandas as pd import matplotlib.pyplot as plt # 你的原始数据 column_a = [0,0,1,1,0,2,0,2,2,1,2,1] column_b = [0.1,0.2,0.3,0.4,0.2,0.3,0.5,0.75,0.8,0.9,1.3,0.2] # 构造DataFrame df = pd.DataFrame({'A': column_a, 'B': column_b})
步骤2:筛选特定分组并绘制直方图
比如你要画A=0时B的直方图,先筛选出A==0的行,再对B列调用直方图方法即可:
方法一:用pandas快速绘制
# 筛选A=0对应的B列数据 subset_b = df[df['A'] == 0]['B'] # 绘制单一直方图 subset_b.hist(bins=5, edgecolor='black') plt.title('Histogram of B when A=0') plt.xlabel('Value of B') plt.ylabel('Frequency') plt.show()
方法二:用matplotlib自定义样式
如果需要更灵活的样式控制,比如添加网格、调整颜色,可以直接用matplotlib绘制:
subset_b = df[df['A'] == 0]['B'] plt.hist(subset_b, bins=5, edgecolor='black', color='#607c8e') plt.title('Histogram of B when A=0') plt.xlabel('Value of B') plt.ylabel('Frequency') plt.grid(axis='y', alpha=0.75) # 可选:添加y轴网格线 plt.show()
关键说明
- 核心逻辑是先过滤出目标分组的数据,而不是依赖
hist(by=...)自动分组所有类别。 - 要绘制其他分组(比如A=1或A=2),只需要把
df['A'] == 0改成对应的条件即可,比如df['A'] == 1。
内容的提问来源于stack exchange,提问作者avogadro
相关产品推荐
相关产品推荐

