matplotlibのアニメーションモジュールでFuncAnimationを使用しています。この関数は永久にアニメーションをループします。マウスのクリックなどでアニメーションを一時停止して再起動できる方法はありますか?python matplotlibアニメーションのstop/start/pause
答えて
ここではa FuncAnimation exampleをマウスクリックで一時停止するように変更しました。 アニメーションはジェネレータ関数simData
によって駆動されるため、グローバル変数pause
がTrueの場合、同じデータを生成するとアニメーションが一時停止したように見えます。
paused
の値は、イベントのコールバックを設定することで切り替えられる。
def onClick(event):
global pause
pause ^= True
fig.canvas.mpl_connect('button_press_event', onClick)
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
pause = False
def simData():
t_max = 10.0
dt = 0.05
x = 0.0
t = 0.0
while t < t_max:
if not pause:
x = np.sin(np.pi*t)
t = t + dt
yield x, t
def onClick(event):
global pause
pause ^= True
def simPoints(simData):
x, t = simData[0], simData[1]
time_text.set_text(time_template%(t))
line.set_data(t, x)
return line, time_text
fig = plt.figure()
ax = fig.add_subplot(111)
line, = ax.plot([], [], 'bo', ms=10)
ax.set_ylim(-1, 1)
ax.set_xlim(0, 10)
time_template = 'Time = %.1f s'
time_text = ax.text(0.05, 0.9, '', transform=ax.transAxes)
fig.canvas.mpl_connect('button_press_event', onClick)
ani = animation.FuncAnimation(fig, simPoints, simData, blit=False, interval=10,
repeat=True)
plt.show()
これは動作します...
anim = animation.FuncAnimation(fig, animfunc[,..other args])
#pause
anim.event_source.stop()
#unpause
anim.event_source.start()
が@fredからの回答の両方を組み合わせると、 @unutbuここでは、アニメーションの作成後にonClick関数を追加できます:
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig = plt.figure()
def run_animation():
anim_running = True
def onClick(event):
nonlocal anim_running
if anim_running:
anim.event_source.stop()
anim_running = False
else:
anim.event_source.start()
anim_running = True
def animFunc(...args...):
# Animation update function here
fig.canvas.mpl_connect('button_press_event', onClick)
anim = animation.FuncAnimation(fig, animFunc[,...other args])
run_animation()
ここで、クリックするだけでアニメーションを停止または開始することができます。
実行しているmatplotlibのバージョンは?これは私にとってはうまくいかないようです – bretcj7
@ bretcj7私はバージョン1.5.3を使用しています。申し訳ありませんが、それを述べたはずです! – woodenflute
私はevent_source.stop()またはmatplotlibのドキュメントを見つけることができないのでしょうか?それは存在しますか? – bretcj7
- 1. Pythonアニメーションの陰影matplotlib
- 2. python matplotlib複数行アニメーション
- 3. Matplotlibアニメーション
- 4. Pythonの3D配列の値のMatplotlibアニメーション
- 5. Python、matplotlibのアニメーションと破線の衝突
- 6. (python)matplotlibアニメーションが表示されない
- 7. matplotlibのアニメーションが
- 8. ツールバーのmatplotlibアニメーション
- 9. アニメーションmatplotlib imshow
- 10. Tensorflow + Matplotlibアニメーション
- 11. アニメーション機能なしのmatplotlibでのアニメーション
- 12. matplotlibアニメーション散布図
- 13. Pythonのmatplotlibでnetworkxの非常に遅いネットワークグラフのアニメーション
- 14. matplotlibのアニメーションmatshow関数
- 15. matplotlibを使ったアニメーションgifのエクスポート
- 16. Pythonのmatplotlibの
- 17. matplotlibのCmap Python
- 18. matplotlibでデータファイルからアニメーションを作成
- 19. matplotlibでアニメーションが動作しない
- 20. イベントハンドラ内でのMatplotlibアニメーションの使用
- 21. 同じ図の連続matplotlibアニメーション
- 22. Matplotlibラインの回転またはアニメーション
- 23. Matplotlib:アニメーション関数の出力をステップで
- 24. matplotlibの - Pythonのエラー
- 25. バーのオーバーレイボックスプロットmatplotlib/python
- 26. Python - tripplolorのmatplotlibサブプロット
- 27. matplotlibの "%"記号Python
- 28. PythonスクリプトのMatplotlibインタラクティブウィジェット
- 29. Python Matplotlibヒストグラムの色
- 30. 3Dのimshow? (Python/Matplotlib)
優秀、ありがとうございます!それが私のトリックでした。 –
かわいい、便利な、面白い、そして方法では、ノスタルジックな; https://youtu.be/TxmZ5sabk7U?t=17またはhttps://youtu.be/C1HuX6nQnQY?t=211 – uhoh