2016-03-15 18 views
8

Zaczynam się uczyć trochę pytona (używałem R) do analizy danych. Próbuję utworzyć dwie partycje przy użyciu seaborn, ale zachowuje on zapisywanie drugiego na początku. Jak mogę zatrzymać to zachowanie?Zatrzymaj seaborn rysując wiele liczb jeden na drugim

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

Odpowiedz

14

Trzeba rozpocząć nową postać w tym celu. Jest na to wiele sposobów, zakładając, że masz matplotlib. Również pozbyć się get_figure() i można z niego korzystać plt.savefig().

Metoda 1

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

Metoda 2

połączeń plt.figure() przed każdym jednym

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

Dzięki. Pomyślałem, że to coś takiego - po prostu nie mogłem znaleźć odpowiednich poleceń! – Alex

+1

Ta odpowiedź "działa", ale jest nieco mniej preferowana IMO, ponieważ opiera się na interfejsie maszynowym stanu matplotlib, zamiast w pełni obejmować interfejs obiektowy. Jest to dobre dla szybkich wątków, ale w pewnym momencie, gdy skalowalność jest złożona, lepiej byłoby użyć tego ostatniego. – mwaskom

5

Tworzenie konkretnych postaci i fabuły na nich:

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') 
Powiązane problemy