2016-03-15 12 views
8

私は、データ分析のために少しのPython(Rを使っています)を学び始めています。私はseabornを使って2つのプロットを作成しようとしていますが、最初のものの上に2番目のものを保存し続けます。この動作を停止するにはどうすればよいですか?海底を止めて、複数の数字を重ねて表示する

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

答えて

14

あなたはそれを行うために、新しい姿を開始する必要があります。 とすると、これを行う方法は複数あります。また、get_figure()を取り除き、そこからplt.savefig()を使用することができます。

方法1

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

方法2

コールplt.figure()各1

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

おかげで前。私はそれがこのようなものだと思った - ちょうど正しいコマンドを見つけることができなかった! – Alex

+1

この回答は「うまくいく」とは言いますが、オブジェクト指向のインターフェイスを完全に取り入れるのではなく、matplotlibのステートマシンインターフェイスに依存するため、あまり好ましくないIMOです。クイックプロットでは問題ありませんが、ある時点で複雑さを増やす場合は、後者を使用する方が良いでしょう。 – mwaskom

5

その上に具体的な数値やグラフを作成します。

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') 
関連する問題