アニメーションの独自の更新関数を登録するために、matplotlib タイマー オブジェクトを使用しています。タイマーオブジェクトへの参照を保持せずにコールバックが開始されると、コールバックを停止できないようです。
これまでの私の経験では、matplotlib でオブジェクトを作成すると、それへの参照が与えられますが、他のオブジェクト (図の軸、軸の線など) 内のリストにも追加され、照会することができます。後で。ただし、タイマーオブジェクトがどこにあるのかわかりません。私の問題は、このコードスニペットで要約できます
import matplotlib.pyplot as plt
import numpy as np
def update():
plt.get_current_fig_manager().canvas.figure.patch.set_facecolor(str(np.random.random()))
plt.draw()
def start_animation():
timer = fig.canvas.new_timer(interval = 50)
timer.add_callback(update)
timer.start()
fig = plt.figure()
start_animation()
上記のコード スニペットを実行してから、プログラムでフラッシュを停止してみてください。呼び出される必要がある関数は
timer.remove_callback(update).
明確にするために。タイマー オブジェクトへの参照を保持するだけで、この問題は解消されることがわかっています。このオブジェクトが matplotlib のどこに存在する必要があるかについての説明を探しています。