Sto usando FuncAnimation nel modulo di animazione di matplotlib per alcune animazioni di base. Questa funzione scorre continuamente attraverso l'animazione. C'è un modo in cui posso mettere in pausa e riavviare l'animazione, per esempio, con i clic del mouse?stop/start/pause in animazione python matplotlib
risposta
Ecco il numero a FuncAnimation example che ho modificato per mettere in pausa i clic del mouse. Poiché l'animazione è gestita da una funzione generatore, simData
, quando la variabile globale pause
è True, restituendo gli stessi dati l'animazione viene messa in pausa.
Il valore di paused
viene attivata attraverso la creazione di un callback evento:
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()
Questo funziona ...
anim = animation.FuncAnimation(fig, animfunc[,..other args])
#pause
anim.event_source.stop()
#unpause
anim.event_source.start()
Combinando entrambe le risposte da @fred e @unutbu qui, possiamo aggiungere una funzione onClick dopo aver creato l'animazione:
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()
Ora possiamo semplicemente interrompere o avviare l'animazione con i clic.
Quale versione di matplotlib stai eseguendo? Questo non sembra funzionare per me – bretcj7
@ bretcj7 Sto usando la versione 1.5.3. Scusa, avrei dovuto dirlo! – woodenflute
Non riesco a trovare la documentazione su matplotlib per event_source.stop() o avviare? Esiste? – bretcj7
- 1. Salva animazione Matplotlib
- 2. uscita matplotlib dopo animazione
- 3. Animazione 3d scatterplot in matplotlib
- 4. Animazione con contorni matplotlib
- 5. Animazione del grafico a linee "crescente" in Python/Matplotlib
- 6. matplotlib, passo dopo passo animazione
- 7. Animazione tramite matplotlib con sottotrame e ArtistAnimation
- 8. Animazione da matplotlib che non funziona nello spyder
- 9. Nuovo in Python ... Python 3 e Matplotlib
- 10. come importare matplotlib in python
- 11. Python: Matplotlib Surface_plot
- 12. python matplotlib multiple bars
- 13. Come plottare cdf in matplotlib in Python?
- 14. Barchart con etichette verticali in python/matplotlib
- 15. Ruota il testo dell'asse in python matplotlib
- 16. plottaggio poligoni 3D in python-matplotlib
- 17. Come etichettare una linea in matplotlib (python)?
- 18. Sottolineatura del testo in Python/Matplotlib
- 19. Come mostrare i grafici matplotlib in python
- 20. Tempo di plottaggio in Python con Matplotlib
- 21. Legenda completamente personalizzata in Matplotlib, Python
- 22. Python - multiprocessing per matplotlib griddata
- 23. Python Matplotlib multicolore Leggenda Entry
- 24. framework python matplotlib sotto macosx?
- 25. Ruota un'immagine in Matplotlib
- 26. Animazioni pixel in Matplotlib
- 27. Matplotlib Animation
- 28. Incorporare matplotlib in C++
- 29. Come posso impostare il 'backend' in matplotlib in Python?
- 30. Mettendo newline in etichetta matplotlib con TeX in Python?
Eccellente, grazie mille! Questo ha fatto il trucco per me. –
Carino, maneggevole, divertente e, in un certo senso, nostalgico; https://youtu.be/TxmZ5sabk7U?t=17 o https://youtu.be/C1HuX6nQnQY?t=211 – uhoh