Je commence à apprendre un peu de python (en utilisant R) pour l'analyse des données. J'essaie de créer deux tracés en utilisant seaborn
, mais cela continue de sauvegarder le second en plus du premier. Comment puis-je arrêter ce comportement?
import seaborn as sns
iris = sns.load_dataset('iris')
length_plot = sns.barplot(x='sepal_length', y='species', data=iris).get_figure()
length_plot.savefig('ex1.pdf')
width_plot = sns.barplot(x='sepal_width', y='species', data=iris).get_figure()
width_plot.savefig('ex2.pdf')
Vous devez commencer une nouvelle figure pour ce faire. Il existe plusieurs façons de le faire, en supposant que vous avez matplotlib
. Débarrassez-vous également de get_figure()
et vous pouvez utiliser plt.savefig()
à partir de là.
Méthode 1
Utilisez plt.clf()
import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset('iris')
length_plot = sns.barplot(x='sepal_length', y='species', data=iris)
plt.savefig('ex1.pdf')
plt.clf()
width_plot = sns.barplot(x='sepal_width', y='species', data=iris)
plt.savefig('ex2.pdf')
Méthode 2
Appelez plt.figure()
avant chacun
plt.figure()
length_plot = sns.barplot(x='sepal_length', y='species', data=iris)
plt.savefig('ex1.pdf')
plt.figure()
width_plot = sns.barplot(x='sepal_width', y='species', data=iris)
plt.savefig('ex2.pdf')
Créez des figures spécifiques et tracez-les dessus:
import seaborn as sns
iris = sns.load_dataset('iris')
length_fig, length_ax = plt.subplots()
sns.barplot(x='sepal_length', y='species', data=iris, ax=length_ax)
length_fig.savefig('ex1.pdf')
width_fig, width_ax = plt.subplots()
sns.barplot(x='sepal_width', y='species', data=iris, ax=width_ax)
width_fig.savefig('ex2.pdf')
Je suis d'accord avec un commentaire précédent selon lequel l'importation de matplotlib.pyplot
n'est pas la meilleure pratique d'ingénierie logicielle car elle expose la bibliothèque sous-jacente. Comme je créais et enregistrais des tracés en boucle, j'ai dû effacer la figure et j'ai découvert que cela peut maintenant être fait facilement en important uniquement seaborn
:
import seaborn as sns
data = np.random.normal(size=100)
path = "/path/to/img/plot.png"
plot = sns.distplot(data)
plot.get_figure().savefig(path)
plot.get_figure().clf() # this clears the figure
# ... continue with next figure