私はデータ分析のためにpython(Rを使用中))を少し学び始めています。seaborn
を使用して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')
それを行うには、新しい図を開始する必要があります。 matplotlib
があると仮定すると、それを行う方法は複数あります。また、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()
を呼び出します
_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')
_
特定の図を作成し、それらにプロットします。
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')
matplotlib.pyplot
のインポートは、基礎となるライブラリを公開するため、ソフトウェアエンジニアリングのベストプラクティスではないという以前のコメントに同意します。プロットをループで作成して保存しているときに、図をクリアする必要があり、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