web-dev-qa-db-ja.com

プロットが完了したことをmatplotlibに伝えるにはどうすればよいですか?

次のコードは2つの PostScript (.ps)ファイルにプロットしますが、2番目のファイルには両方の行が含まれています。

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.subplot(111)
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("first.ps")


plt.subplot(111)
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")

Matplotlibに2番目のプロットで新たに開始するように指示するにはどうすればよいですか?

143
Stefano Borini

たとえば、figureを使用して新しいプロットを作成したり、最初のプロットの後にcloseを使用したりできます。

113

明確な図コマンドがあり、それはあなたのためにそれを行う必要があります:

plt.clf()

同じ図に複数のサブプロットがある場合

plt.cla()

現在の軸をクリアします。

154
randlet

David Cournapeauから述べられているように、figure()を使用します。

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.figure()
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("first.ps")


plt.figure()
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")

または、同じプロットの異なる位置のsubplot(121)/ subplot(122)。

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.subplot(121)
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")

plt.subplot(122)
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")
28
lmount

最初のplt.plotの前にplt.hold(False)と入力するだけで、元のコードをそのまま使用できます。

13
Dirklinux

Matplotlibをインタラクティブに使用している場合、たとえばWebアプリケーション(ipythonなど)で探している場合は、

plt.show()

plt.close()またはplt.clf()の代わりに。

8
Damo

どれも機能していない場合は、これを確認してください。たとえば、それぞれの軸に沿ってデータのxおよびy配列があるかどうかを確認してください。次に、xとyを空に初期化したセル(jupyter)をチェックインします。これは、多分、データを再初期化せずにxとyに追加しているためです。したがって、プロットにも古いデータがあります。確認してください。

0
Seenivasan