1

アニメーションの独自の更新関数を登録するために、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 のどこに存在する必要があるかについての説明を探しています。

4

1 に答える 1