web-dev-qa-db-fra.com

Parcelles de Seaborn en boucle

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')        
11
Tronald Dump

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)
13
Ted Petrou

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);
11
jorgeh

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:

  • si une plage de valeurs diffère dans vos colonnes - définissez sharex = False ou supprimez-la
  • pas besoin de titres: seaborn insère automatiquement les noms de colonnes comme xlabel
  • pour une vue compacte, changez xlabels en ylabel comme dans l'extrait de code
2
sherdim