2016-03-15 3 views
8

Ich fange an, ein wenig Python (mit R) für die Datenanalyse zu lernen. Ich versuche, zwei Diagramme mit seaborn zu erstellen, aber es speichert die zweite über die erste. Wie kann ich dieses Verhalten stoppen?Stop Seaborn mehrere Zahlen übereinander plotten

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') 

Antwort

14

Sie haben eine neue Figur starten, um das zu tun. Es gibt mehrere Möglichkeiten, dies zu tun, vorausgesetzt, Sie haben matplotlib. Auch loswerden get_figure() und Sie können plt.savefig() von dort verwenden.

Methode 1

Verwenden 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') 

Methode 2

Anruf plt.figure() vor jedem

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') 
+0

Dank. Ich dachte, es wäre so etwas - ich konnte einfach nicht die richtigen Befehle finden! – Alex

+1

Diese Antwort "funktioniert", ist aber ein wenig weniger bevorzugt IMO, da sie auf der matplotlib-Zustandsmaschine-Schnittstelle beruht, anstatt die objektorientierte Schnittstelle vollständig einzuschließen. Es ist in Ordnung für schnelle Plots, aber irgendwann, wenn die Komplexität skaliert wird, wäre es besser, letztere zu verwenden. – mwaskom

5

erstellen konkrete Zahlen und Grundstück auf sie:

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')