J'utilise Spyder et je trace des parcelles de comptage Seaborn en boucle. Le problème est que les intrigues semblent se produire les unes sur les autres dans le même objet et je ne vois que la dernière instance de l'intrigue. Comment puis-je visualiser chaque tracé dans ma console l'un au-dessous de l'autre?
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')
Vous pouvez créer une nouvelle figure à chaque boucle ou éventuellement tracer sur un axe différent. Voici le code qui crée la nouvelle figure à chaque boucle. Il récupère également les colonnes int et float plus efficacement.
df1 = df.select_dtypes([np.int, np.float])
for i, col in enumerate(df1.columns):
plt.figure(i)
sns.countplot(x=col, data=df1)
Avant d'appeler sns.countplot
, Vous devez créer une nouvelle figure.
En supposant que vous avez importé import matplotlib.pyplot as plt
, Vous pouvez simplement ajouter plt.figure()
juste avant sns.countplot(...)
Par exemple:
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);
Pour répondre à la question dans les commentaires: Comment tout tracer sur une seule figure? Je montre également une méthode alternative pour afficher les tracés dans une console les uns au-dessous des autres.
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);
Remarques: