[解決済み] 開いている数字が多すぎる場合の警告
質問
で多くの図形を作成するスクリプトで
fix, ax = plt.subplots(...)
という警告が表示されます。
RuntimeWarning: 20個以上の図形が開かれています。pyplotインターフェースで作成された図(
matplotlib.pyplot.figure
は、明示的に閉じるまで保持され、メモリを過剰に消費する可能性があります。
しかし、私が理解できないのは
なぜ
この警告が表示されるのは、図の保存時に
fig.savefig(...)
で削除し、さらに
fig.clear(); del fig
. 私のコードでは、一度に複数の図を開いていることはありません。それでも、開いている図形が多すぎるという警告が表示されます。 これは何を意味するのでしょうか?
解決方法は?
使用方法
.clf
または
.cla
を作成するのではなく、図オブジェクトに
新しい
の図になります。から
デービッド・ズウィッカー
をインポートしたと仮定すると
pyplot
として
import matplotlib.pyplot as plt
plt.cla()
軸を消去します。
つまり、現在の図の中で現在アクティブな軸です。他の軸はそのままにしておきます。
plt.clf()
現在の図形をすべて消去します
は、そのすべての軸を含むウィンドウを開いたままにして、他のプロットで再利用できるようにします。
plt.close()
ウィンドウを閉じる
特に指定がなければ、カレントウィンドウとなります。
plt.close('all')
は、開いているすべての図形を閉じます。
というのは
del fig
が機能しないのは
pyplot
状態マシンは、図への参照を保持します(「現在の図」が何であるかを知るためには必要なことです)。つまり、たとえ
あなたの
への参照は、少なくとも1つ残っており、ガベージコレクションされることはありません。
この回答については、ここの集合知にポーリングしているので、@JoeKington がコメントで次のように言及しています。
plt.close(fig)
は、パイラブのステートマシンから特定の図のインスタンスを削除します(
plt._pylab_helpers.Gcf
を使用し、ガベージコレクトされるようにします。
関連
-
opencvとpillowを用いた顔認証システム(デモあり)
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み] データ型が理解できない
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み] Matplotlibの対話型図形の保存
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python string splicing.join()とsplitting.split()の説明
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み] matplotlib でプロットをクリアするために cla()、clf() または close() をいつ使うか?