您可能想要将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()
你会从熊猫直接获得不seaborn类似的东西:
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()
你有样本数据?我想你应该看看[FacetGrid](https://seaborn.pydata.org/generated/seaborn.FacetGrid.html)。 –
使用通常的'plt.subplots' meachnism可能也不错,但是如果没有对输入数据和期望结果的全面解释,这个问题可能不会被回答。 – ImportanceOfBeingErnest
输入数据是一个数据框,可以说20个变量,其中15个是分类的,因此用类型对象对它们进行过滤。上面的for循环计算每个分类变量的图表,但在单个列中。这适用于小型数据集,但具有20+分类变量的数据集非常繁琐,无法向下滚动,我希望这些20+图能够排列在网格中,让我们看到4列和5行。希望有助于更好地理解问题。 – mickeyt500