使用 seaborn 绘制多个直方图

avi*_*iss 2 plot histogram python-3.x pandas seaborn

我有一个包含 36 列的数据框。我想使用 seaborn 一次性(6x6)为每个特征绘制直方图。基本上是繁殖,df.hist()但带有seaborn。我下面的代码仅显示第一个功能的图,所有其他功能都为空。

在此处输入图片说明

测试数据框:

df = pd.DataFrame(np.random.randint(0,100,size=(100, 36)), columns=range(0,36))
Run Code Online (Sandbox Code Playgroud)

我的代码:

import seaborn as sns
# plot
f, axes = plt.subplots(6, 6, figsize=(20, 20), sharex=True)
for feature in df.columns:
    sns.distplot(df[feature] , color="skyblue", ax=axes[0, 0])
Run Code Online (Sandbox Code Playgroud)

Imp*_*est 10

我想同时循环遍历轴和特征是有意义的。

f, axes = plt.subplots(6, 6, figsize=(20, 20), sharex=True)
for ax, feature in zip(axes.flat, df.columns):
    sns.distplot(df[feature] , color="skyblue", ax=ax)
Run Code Online (Sandbox Code Playgroud)

Numpy 数组按行进行展平,即您将获得第一行的前 6 个特征,第二行的特征 6 到 11 等。

如果这不是您想要的,您可以手动定义轴数组的索引,

f, axes = plt.subplots(6, 6, figsize=(20, 20), sharex=True)
    for i, feature in enumerate(df.columns):
        sns.distplot(df[feature] , color="skyblue", ax=axes[i%6, i//6])
Run Code Online (Sandbox Code Playgroud)

例如,上面将逐列填充子图。