使用Seaborn安排多个for循环分类图

时间:2017-08-18 22:21:58

标签: python pandas seaborn

我正在使用for循环为数据框df创建多个分类图:

object_bol = df.dtypes == 'object'
for catplot in df.dtypes[object_bol].index:
    sns.countplot(y=catplot,data=df)

plt.show()

输出是一个接一个地排序的所有图,如何将其分配给具有n列和m行的网格(n& m根据数据帧中的对象数量而变化)?

1 个答案:

答案 0 :(得分:3)

您可能希望将示例从How do I plot two countplot graphs side by side in seaborn?扩展到更多子图。

import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

df=pd.DataFrame(np.random.choice(list("abcd"), size=(100,20), p=[.4,.3,.2,.1]))

fig, axes =plt.subplots(5,4, figsize=(10,10), sharex=True)
axes = axes.flatten()
object_bol = df.dtypes == 'object'
for ax, catplot in zip(axes, df.dtypes[object_bol].index):
    sns.countplot(y=catplot, data=df, ax=ax, order=np.unique(df.values))

plt.tight_layout()  
plt.show()

enter image description here

你可以直接从熊猫那里获得类似的东西:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df=pd.DataFrame(np.random.choice(list("abcd"), size=(100,20), p=[.4,.3,.2,.1]))

df.apply(pd.value_counts).plot(kind="barh", subplots=True, layout=(4,5), legend=False)

plt.tight_layout()  
plt.show()

enter image description here