0
私はコードmatplotlibアニメーションがインタラクティブセッションでのみ機能する理由は何ですか?
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
if __name__ == '__main__':
fig = plt.figure()
title = fig.suptitle("Test _")
def anim(i):
title.set_text("Test %d" % i)
plt.plot([0,1], [0,1])
FuncAnimation(fig, anim)
plt.show()
でファイルtest.py
を作成して、私のコマンドラインでそれを実行しようとすると、python test.py
を使用して、私はタイトルTest _
とし、任意の軸をなし、空の画面を取得します。
同じ
はpython -i test.py
を実行するときに真であるが、私は今、対話型セッションで
>>> fig = plt.figure()
>>> title = fig.suptitle("Test _")
>>> FuncAnimation(fig, anim)
>>> plt.show()
すべてを同じコードを入力する場合に予想されるとしてだけで動作します。
私はこれほど長い間これを見てきましたが、これに関連する問題や疑問点は見つけられません。私はOS Xでpython 3.5.2でmatplotlib 2.0.0を使用しています。
これは(既知の)バグですか?なぜこれが起こっているのか、これがどのように解決できるのか、アイデアをお持ちの方?
私はあまりにも多くの時間を過ごしました...愚かな私はそれを見つけませんでした。ありがとう! PS:インタラクティブモード(好奇心のたからから)で動作する理由は何ですか? –
インタラクティブモードとは、IPythonコンソールを意味しますか?その場合、セル出力はメモリ内に保持されるため、リファレンスを緩和しないでください。 – ImportanceOfBeingErnest
いいえ、それはPythonインタプリタのインタラクティブモードです。 [この回答](http://stackoverflow.com/q/23843234/4375377)私の例でアニメーションオブジェクトがガベージコレクションされていない理由を説明します... –