Il mio codice produce un numero di grafici dai dati usando matplotib e vorrei poter scorrere avanti e indietro attraverso di essi in una dimostrazione dal vivo (magari premendo i tasti avanti e indietro o usando il topo). Attualmente devo salvare ognuno di essi come un'immagine separatamente e quindi utilizzare un visualizzatore di immagini separato per scorrere attraverso di essi. C'è un modo per farlo interamente da Python?Scorrere avanti e indietro attraverso i grafici matplotlib
risposta
Un modo semplice per raggiungere questo sta memorizzando in una lista una tupla dei xey array e quindi utilizzare un evento gestore che raccoglie la coppia successiva (x, y) da disegnare:
import numpy as np
import matplotlib.pyplot as plt
# define your x and y arrays to be plotted
t = np.linspace(start=0, stop=2*np.pi, num=100)
y1 = np.cos(t)
y2 = np.sin(t)
y3 = np.tan(t)
plots = [(t,y1), (t,y2), (t,y3)]
# now the real code :)
curr_pos = 0
def key_event(e):
global curr_pos
if e.key == "right":
curr_pos = curr_pos + 1
elif e.key == "left":
curr_pos = curr_pos - 1
else:
return
curr_pos = curr_pos % len(plots)
ax.cla()
ax.plot(plots[curr_pos][0], plots[curr_pos][1])
fig.canvas.draw()
fig = plt.figure()
fig.canvas.mpl_connect('key_press_event', key_event)
ax = fig.add_subplot(111)
ax.plot(t,y1)
plt.show()
In questo codice scelgo le frecce right
e left
per iterare, ma puoi cambiarle.
Grazie mille jabaldonedo --- il tuo esempio è ora nel mio progetto e quindi posso confermare per gli altri che funziona. Nel mio caso "key_event" è una chiusura all'interno di una chiusura all'interno di un decoratore. Non capisco la causa --- quindi aiutami non è la punteggiatura errata alla fine della riga precedente --- ma continuavo a ricevere "nome globale' curr_pos' non definito ", nonostante sia chiaramente definito da' curr_pos = 0'. Ho optato per una soluzione nella forma 'if not hasattr (key_event," curr_pos "): key_event.curr_pos = 0' al posto di' global curr_pos'. Vorrei usare 'key_event .__ dict __ = {}' per resettare se necessario. –
- 1. Tasti Indietro/Avanti e usabilità
- 2. eseguire javascsript ciclo alternativamente avanti e indietro
- 3. QTableView Zoom avanti/indietro
- 4. dired indietro/avanti funzione
- 5. Gestisci avanti e indietro in Richfaces
- 6. PyCharm non aprirà correttamente i grafici matplotlib
- 7. Utilizzando i pulsanti Indietro e Avanti con l'API Storia
- 8. Pulsanti Avanti/Indietro personalizzati Flexslider
- 9. Galleria Android zoom avanti/indietro
- 10. Come riutilizzare i grafici in matplotlib?
- 11. i grafici in stile "circos" con matplotlib?
- 12. Python Matplotlib sovrappone i grafici a dispersione
- 13. Come mostrare i grafici matplotlib in python
- 14. Scorrimento indietro attraverso la console RStudio
- 15. Come esportare i grafici da matplotlib con sfondo trasparente?
- 16. browser di destinazione indietro e pulsanti avanti singolarmente
- 17. Codifica le barre in avanti e indietro in tomcat 7?
- 18. Grafici candlestick intraday con Matplotlib
- 19. Invio di variabili PHP avanti e indietro tra le pagine
- 20. Perché ci sono due barre - avanti e indietro?
- 21. IntelliJ IDEA indietro/avanti con il mouse
- 22. Accelerazione di grafici scatter matplotlib
- 23. Controllo UIPageViewController quando si scorre indietro o in avanti
- 24. Modo corretto per saltare avanti e indietro tra due rami?
- 25. Emacs: spostarsi su un determinato carattere, avanti e indietro
- 26. Come spostarsi avanti e indietro nell'anello segnapunti di Emacs
- 27. Editor di atomi: come saltare avanti e indietro
- 28. Disabilita il pulsante Indietro e Avanti su UIToolBar in UIWebview
- 29. pulsante avanti e indietro per webview in Android. Come?
- 30. stringa TValue <--> booleano avanti e indietro
Il tempo richiesto per generare i grafici è troppo lungo per poterlo fare? Cioè 'premi un pulsante -> genera un grafico -> mostra esso 'e così via. –
@AleksanderLidtke Posso generarli dal vivo ma come faccio a scorrere avanti e indietro attraverso i grafici che ho creato? – phoenix
richiamate. Vedi http://matplotlib.org/users/event_handling.html. Così com'è, questa domanda è troppo ampia. – tacaswell