Artists in matplotlib
have methods to set/get their animated state (a boolean). Ich kann nicht scheinen, Dokumentation zu finden, um den Zweck der Variablen "animierten Zustand" zu erklären. Kannst du das erklären oder mich auf eine geeignete Ressource hinweisen?`matplotlib`: Was ist der Zweck des animierten Zustands eines Künstlers?
Antwort
Ich bin mir nicht sicher, ob es irgendwo gründlich dokumentiert ist, aber der animierte Zustand eines Künstlers steuert, ob er beim Zeichnen des Plots enthalten ist oder nicht. Wenn animated
True ist, wird der Künstler nicht gezeichnet, wenn fig.draw()
aufgerufen wird. Stattdessen wird es nur gezeichnet, wenn Sie draw_artist(artist_with_animated_set)
manuell aufrufen. Dies ermöglicht eine Vereinfachung der Blitting-Funktionen.
Hinweis: Dies gilt nicht für alle Backends! Ich denke, es gilt für fast alle interaktiven Backends, aber nicht für nicht interaktive Backends. Es sollte in Kombination mit Blitting verwendet werden, sodass Backends, die Blitting nicht unterstützen, die animierte Flagge nicht unterstützen.
Zum Beispiel, wenn wir etwas tun, wie folgt aus:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10), animated=True)
plt.show()
Wir werden ein leeres Grundstück erhalten - die Linie nicht gezogen werden. (Hinweis: Wenn Sie diese Zahl speichern, die Linie wird zeigt nach oben Siehe Vorbehalt über nicht-interaktiven Backends über Matplotlib vorübergehend schaltet in einen nicht interaktiven Backend eine Zahl zu speichern...)
Um zu verstehen, warum dies sinnvoll ist, nehmen Sie an, Sie würden eine Animation oder interaktive GUI erstellen (und nicht das neue Animationsframework verwenden). Sie sollten Blitting verwenden, um die Animation "glatt" erscheinen zu lassen.
Immer wenn die Größe der Figur geändert wird usw., muss der Hintergrund der Animation aktualisiert werden. Der beste Weg, dies zu handhaben, ist, einen Rückruf mit dem Zeichenereignis zu verbinden. Ohne das Flag animated
müssen Sie das Plot innerhalb Ihren Zeichenrückruf neu zeichnen, der eine Endlosschleife verursacht. (Die Problemumgehung besteht darin, den Rückruf des Zeichenereignisses zu trennen und erneut zu verbinden, aber das ist ein bisschen mühsam.)
In jedem Fall vereinfacht die animierte Flagge diesen Vorgang ein wenig. Zum Beispiel könnten Sie die animated
Flagge in etwas ähnlich der folgenden verwenden:
import numpy as np
import matplotlib.pyplot as plt
class AnimatedSinWave(object):
def __init__(self, speed=0.1, interval=25):
self.fig, self.ax = plt.subplots()
self.x = np.linspace(0, 6 * np.pi, 200)
self.i, self.speed = 0.0, speed
self.line, = self.ax.plot(self.x, np.sin(self.x), animated=True)
self.ax.set_title('Try resizing the figure window')
self.fig.canvas.mpl_connect('draw_event', self.update_background)
self.t = self.fig.canvas.new_timer(interval, [(self.update, [], {})])
self.t.start()
def update_background(self, event):
self._background = self.fig.canvas.copy_from_bbox(self.ax.bbox)
def update(self):
self.fig.canvas.restore_region(self._background)
self.line.set_ydata(np.sin(self.i * self.speed + self.x))
self.ax.draw_artist(self.line)
self.i += 1
self.fig.canvas.blit(self.ax.bbox)
def show(self):
plt.show()
AnimatedSinWave().show()
Hinweis: Aus verschiedenen Gründen, werden Sie ein paar seltsame Dinge passieren auf dem OSX und qt * Agg Backends haben. Wenn der Hintergrund schwarz ist, wenn das Fenster zum ersten Mal erscheint, verschieben oder fokussieren Sie das Fenster und es sollte sich selbst reparieren.
Auf jeden Fall, ohne die animated
Flag (oder das neuere Animation Framework), das Beispiel wird viel komplexer.
- 1. Was ist der Zweck des Schließens eines Zweiges
- 2. Zurücksetzen des Zustands eines Datenstroms
- 3. Was ist der Zweck des Ember.Container
- 4. Azure - Was ist der Zweck eines Ressourcengruppenstandorts?
- 5. Was ist der Zweck der verschiedenen * Zieleigenschaften?
- 6. Was ist der Zweck des String-Konstruktors von ostringstream?
- 7. Was ist der Zweck des <circle> html-Tags?
- 8. Was ist der Zweck des Fragezeichens am Anfang der Variablen?
- 9. Was ist der Zweck des Flags AI_V4MAPPED in getaddrinfo?
- 10. Was ist der Zweck von. * \\?
- 11. Datenbankschwenkung - was ist der Zweck?
- 12. Was ist der Zweck der Option -lrt?
- 13. Was ist der Zweck eines Routennamens in mojolicious?
- 14. Was ist der Zweck eines Semikolons vor einem IIFE?
- 15. Was ist der Zweck der Prozedur Verknüpfungstabelle?
- 16. Was ist der Zweck der WS-Adressierung?
- 17. Was ist der Zweck der Winkel-Sanitize?
- 18. Was ist der Zweck des Tuple (T1)/Singleton in .net?
- 19. Was ist der Zweck des '@' Symbols in CSS?
- 20. Was ist der Zweck des Meta-Tags "robots" in HTML?
- 21. Was ist der Zweck des Standardschlüsselworts in Java?
- 22. Was ist der Zweck des Moduls im IOS Interface Builder?
- 23. Was ist der Zweck des Microsoft Loopback Adapters?
- 24. Was ist der Zweck des Befehls "typeAndWait" in Selenium IDE?
- 25. Was ist der Zweck des Metadatenbereichs in einer CloudFormation-Vorlage?
- 26. Was ist der Zweck des Win32 CreateFile2 API-Aufrufs?
- 27. Was ist der Zweck des UD2-Opcodes im Linux-Kernel?
- 28. Was genau ist der Zweck des (Sternchens) in Zeigern?
- 29. Was ist der Zweck des Hebens in ES6?
- 30. Was ist der Zweck des Feldes sa_data in einem Sockaddr?
Vielen Dank! – user89
Zunächst einmal, vielen Dank für die Beantwortung dieser Frage, vor allem, weil es nirgendwo in der Dokumentation ist. Ich verstehe dein Beispiel jedoch nicht vollständig. Der einzige Unterschied, wenn Sie in Ihrem Beispiel nicht die Option 'animated = True' verwenden, ist, dass die Linie im ersten Aufruf gezeichnet wird und somit im Hintergrund gespeichert wird. Ist das der einzige Zweck? – toes
@toes - Das ist der Hauptunterschied. Noch wichtiger ist, dass alle Aufrufe von "draw" den Künstler ignorieren, der "animated = True" gesetzt hat. Es muss immer manuell gezeichnet werden (d. H. Es ist nicht nur das erste Mal). Der Hauptgrund (nur?), Wie Sie richtig erwähnt haben, ist zu vermeiden, dass der animierte Künstler jemals Teil des Hintergrunds ist. –