Mein Code erzeugt eine Anzahl von Plots aus Daten mit Matplotib und ich möchte in einer Live - Demonstration vorwärts und rückwärts durch sie blättern können (vielleicht durch Drücken der Vorwärts - und Rückwärts - Tasten oder mit Die Maus). Momentan muss ich jedes Bild separat speichern und dann mit einem separaten Bildbetrachter durch die Bilder scrollen. Gibt es eine Möglichkeit, dies vollständig innerhalb von Python zu tun?Blättern durch Matplotlib Plots
Antwort
Ein einfacher Weg, das zu erreichen, ist in einer Liste ein Tupel des x- und y-Arrays zu speichern und dann ein Handler-Ereignis verwenden, die das nächste (x, y) Paar zu aufgetragen nimmt:
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 diesem Code wähle ich die right
und left
Pfeile zu iterieren, aber Sie können sie ändern.
Vielen Dank jabaldonedo --- Ihr Beispiel ist jetzt in meinem Projekt und so kann ich für andere bestätigen, dass es funktioniert. In meinem Fall ist 'key_event' eine Schließung innerhalb einer Schließung innerhalb eines Decorators. Ich verstehe die Ursache nicht - also hilf mir, es ist keine falsche Interpunktion am Ende der vorherigen Zeile ---, aber ich bekam immer den "globalen Namen' curr_pos' nicht definiert ", obwohl es eindeutig durch' curr_pos 'definiert ist = 0'. Ich entschied mich für eine Lösung in der Form 'falls nicht hasattr (key_event," curr_pos "): key_event.curr_pos = 0' anstelle von' global curr_pos'. Ich würde 'key_event .__ dict __ = {}' verwenden, um bei Bedarf zurückzusetzen. –
- 1. Overlay imshl plots in matplotlib
- 2. mehrere Plots mit Funktion matplotlib
- 3. Logscale-Plots mit Nullwerten in Matplotlib
- 4. matplotlib: mehrere Plots auf einer Figur
- 5. Wie Plots Nebenhandlungen hinzufügen matplotlib mit
- 6. Overlay Plots und Scroll unabhängig matplotlib
- 7. Scatter-Plots mit String-Arrays in Matplotlib
- 8. Plots nicht sichtbar sind mit matplotlib plt.show()
- 9. Matplotlib: Warum sind Plots immer geschlossene Formen?
- 10. Blättern durch Datenbankergebnisse mit jquery
- 11. Mit opencv durch Pixel blättern
- 12. Repeater mit Blättern durch Object
- 13. Wie kann ich Plots von Matplotlib mit transparentem Hintergrund exportieren?
- 14. R Lattice like plots mit Python, Pandas und Matplotlib
- 15. Ändern der Hintergrundfarbe der Achsenebenen eines Matplotlib-3D-Plots
- 16. Einbetten eines interaktiven Matplotlib-Plots in eine Webseite
- 17. Programmatisch Abstand zur Seite von Plots in Matplotlib hinzufügen
- 18. Wie man Text zwischen Plots in Matplotlib setzt
- 19. matplotlib: Hinzufügen von Padding/Offset zu Polar Plots Tick-Labels
- 20. Wie skaliere ich Matplotlib pColorMesh Plots für große Datensätze zuverlässig?
- 21. Tweaking Achsenbeschriftungen und Namen Orientierung für 3D-Plots in matplotlib
- 22. Einfache Linie Plots mit Seaborn
- 23. Plotten Wahrscheinlichkeitsdichtefunktion durch Probe mit Matplotlib
- 24. Seaborn Zyklus durch Farben mit matplotlib Streu
- 25. jupyter Notebook Inline-Plots als svg
- 26. Aufzählung in Matplotlib Abbildung
- 27. Erstelle Padding innerhalb des Plots
- 28. Lange Tisch blättern, aber Fenster blättern
- 29. Multidimensionale Plots
- 30. Plots in lordif
Ist die Zeit, die benötigt wird, um die Plots live zu generieren, zu lang, um genau das zu tun? I.e. 'drücken Sie einen Knopf -> erzeugen Sie ein Diagramm -> zeigen Sie es' an und so weiter. –
@AleksanderLidtke Ich kann sie live erzeugen, aber wie blättere ich die von mir erstellten Plots vor und zurück? – phoenix
Rückrufe. Siehe http://matplotlib.org/users/event_handling.html. Wie es aussieht, ist diese Frage zu weit gefasst. – tacaswell