したがって、私はいくつかのpythonコードを使用して、pyplotを使用していくつかのグラフをプロットします。スクリプトを実行するたびに、新しいプロットウィンドウが作成され、手動で閉じる必要があります。開いているすべてのpyplotウィンドウを閉じる方法スクリプトの開始、つまり、スクリプトの前回の実行中に開いたウィンドウを閉じるなど。
MatLabでは、これはcloseall
を使用するだけで実行できます。
スクリプトから開いているすべてのFigureを閉じるには、次を呼び出します。
plt.close('all')
または、関連するPythonプロセスを終了できます。
_import matplotlib.pyplot as plt
plt.close("all")
_
(既にpyplotがインポートされている場合は、明らかにそれを再度インポートする必要はありません。その場合は、plt
をplt.close("all")
でpyplotに選択したエイリアスに置き換えてください。インポートしました。)
私は同じ問題を抱えていました。複数のプロットウィンドウを生成する関数を呼び出します。関数を呼び出すたびに、ポップアップされたプロットウィンドウが累積されます。関数の先頭でmatplotlib.pyplot.close('All')
を試しても問題は解決しませんでした。私はmatplotlib.pyplot.close(figure)
を呼び出すことで問題を解決しました。ここで、figureはプロット図のインスタンス(オブジェクト)です。プロット図オブジェクトのリストを保持しています。したがって、リストを保持し、Figureオブジェクトの各インスタンスに対してmatplotlib.pyplot.close(figure)
を呼び出すことをお勧めします。
import matplotlib.pyplot as plot
fig, (ax1,ax2) = plt.subplots(nrows=2)
figAxisDict = {'figure': fig, 'axis1': ax1, 'axis2':ax2}
figAxisList.append(figAxisDict)
if len(figAxisList) !=0:
for figAxis in figAxisList:
figure=figAxis['figure']
plot.close(figure)
figAxisList[:]=[]
スクリプト自体からこれを自動的に行う簡単な解決策はないようです:pycharm内のすべての既存の数値を閉じるためのおそらく最も簡単な方法は、対応するプロセスを強制終了することです(jakevdpが彼のコメントで示唆したように)。
メニューの実行\停止...(Ctrl-F2)。数秒の遅延でウィンドウが閉じていることがわかります。
このソリューションでは、以前の実行からのプロットを閉じることはできませんが、それらを開いたままにすることはできません!
これらの「ぶら下がっている」数字を閉じるために私が見つけた唯一の方法は、プロセスを見つけて殺すことです。
非ブロッキング方式でプロットしてから、入力を求めます。これにより、プロットを適切に閉じることを忘れないようにする必要があります。
plt.show(block=False)
plt.pause(0.001) # Pause for interval seconds.
input("hit[enter] to end.")
plt.close('all') # all open plots are correctly closed after each run