Spyderを使用し、ループでSeabornカウントプロットをプロットしています。問題は、同じオブジェクト内でプロットが互いに重なり合っているように見えることと、プロットの最後のインスタンスのみが表示されることです。コンソールで各プロットを上下に表示するにはどうすればよいですか?
for col in df.columns:
if ((df[col].dtype == np.float64) | (df[col].dtype == np.int64)):
i=0
#Later
else :
print(col +' count plot \n')
sns.countplot(x =col, data =df)
sns.plt.title(col +' count plot')
ループごとに新しい図を作成したり、場合によっては異なる軸にプロットしたりできます。ループごとに新しい図を作成するコードを次に示します。また、int列とfloat列をより効率的に取得します。
df1 = df.select_dtypes([np.int, np.float])
for i, col in enumerate(df1.columns):
plt.figure(i)
sns.countplot(x=col, data=df1)
_sns.countplot
_を呼び出す前に、新しいFigureを作成する必要があります。
_import matplotlib.pyplot as plt
_をインポートしたと仮定すると、plt.figure()
の直前にsns.countplot(...)
を追加できます。
例えば:
_import matplotlib
import matplotlib.pyplot as plt
import seaborn
for x in some_list:
df = create_df_with(x)
plt.figure() #this creates a new figure on which your plot will appear
seaborn.countplot(use_df);
_
コメントで質問に答えるには:すべてを単一の図にプロットする方法は?また、コンソールでプロットを上下に表示する代替方法も示します。
import matplotlib.pyplot as plt
df1 = df.select_dtypes([np.int, np.float])
n=len(df1.columns)
fig,ax = plt.subplots(n,1, figsize=(6,n*2), sharex=True)
for i in range(n):
plt.sca(ax[i])
col = df1.columns[i]
sns.countplot(df1[col].values)
ylabel(col);
ノート: