如何使用matplotlib并排显示直方图
我想看看不同的分布是怎么根据标志列(flag column)变化的:
示例数据:
np.random.seed(0)
df = pd.DataFrame({'col1' : np.random.uniform(size = 100),
'col2' : np.random.uniform(size = 100),
'col3' : np.random.uniform(size = 100),
'flag' : np.random.choice([0,1], 100)})
df
col1 col2 col3 flag
0 0.548814 0.677817 0.311796 0
1 0.715189 0.270008 0.696343 0
2 0.602763 0.735194 0.377752 1
3 0.544883 0.962189 0.179604 1
4 0.423655 0.248753 0.024679 1
... ... ... ... ...
95 0.183191 0.490459 0.224317 0
96 0.586513 0.227415 0.097844 0
97 0.020108 0.254356 0.862192 0
98 0.828940 0.058029 0.972919 1
99 0.004695 0.434417 0.960835 0
我可以通过两个 for
循环来查看直方图,一个用于 flag == 0
,另一个用于 flag == 1
,代码如下:
for col in df.loc[df['flag'] == 0, ['col1', 'col2', 'col3']].columns:
plt.hist(df[col])
plt.title(col)
plt.show()
有人能告诉我,是否可以生成这样的可视化效果:把每一列的直方图并排放置,分别对应不同的 flag
列吗?
1 个回答
2
seaborn 非常适合这个:
import seaborn as sns
...
sns.displot(df.melt(id_vars='flag'), row='variable', col='flag', x='value')
输出结果: