[PYTHON] Einfache Animation mit matplotlib (mp4, gif)

matplotlib.animation: Eine praktische Bibliothek zur Generierung von Animationen, die auf matplotlib basiert.

Installation

@mac


$ pip install matplotlib
$ brew install imagemagick #Zum Speichern von GIF
$ brew install ffmpeg #Zum Speichern von mp4

matplotlib.rc fix


$ python -c "import matplotlib;print(matplotlib.matplotlib_fname())"
/Users/riki/.pyenv/versions/ML-2.7.13/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc
$ atom /Users/riki/.pyenv/versions/ML-2.7.13/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc

# line 38
- backend : macosx
+ backend : Tkagg

Es gibt zwei Arten von Funktionen, die Animationen erzeugen

Persönlich ist Artist Animation leichter zu verstehen, daher empfehle ich dies. FuncAnimation ist flexibler, aber ich habe keine Unannehmlichkeiten mit Artist Animation.

ArtistAnimation

animation.ArtistAnimation(fig, artists, interval=200)

Beachten Sie, dass es leicht zu Fehlern kommt, wenn das Argument des Künstlers eine Liste von Listen sein muss. (Details werden später beschrieben)


Beispiel 1: Sinuswellenanimation

anim_sin_wave.py


import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig = plt.figure()
x = np.arange(0, 10, 0.1)

ims = []
for a in range(50):
    y = np.sin(x - a)
    line, = plt.plot(x, y, "r")
    ims.append([line])

ani = animation.ArtistAnimation(fig, ims)
ani.save('anim.gif', writer="imagemagick")
ani.save('anim.mp4', writer="ffmpeg")
plt.show()

anim.gif

Die Funktion pyplot.plot kann mehrere Diagramme gleichzeitig zeichnen, sodass der Rückgabetyp eine Liste ist.

lines = plt.plot(x1, y1, 'r', x2, y2, 'g', x3, y3, 'b')
print type(lines) # list
print len(lines) # 3
print type(lines[0]) # matplotlib.lines.Line2D

Aus Gründen der Übersichtlichkeit wagt der Hauptcode das Entpacken, um das Line2D-Objekt abzurufen, es dann in Liste zu ändern und es dann zur Liste hinzuzufügen.

line, = plt.plot(x, y, "r")
ims.append([line])

Sie können die Animation wie folgt speichern (jeder, der GIF oder MP4 mag)

ani.save('anim.gif', writer="imagemagick")
ani.save('anim.mp4', writer="ffmpeg")

Beispiel 2: Animation eines zweidimensionalen Bildes

dynamic_image.py


import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig = plt.figure()

def f(x, y):
    return np.sin(x) + np.cos(y)

x = np.linspace(0, 2 * np.pi, 120)
y = np.linspace(0, 2 * np.pi, 100).reshape(-1, 1)
ims = []

for i in range(60):
    x += np.pi / 15.
    y += np.pi / 20.
    im = plt.imshow(f(x, y), animated=True)
    ims.append([im])

ani = animation.ArtistAnimation(fig, ims, interval=50, blit=True,
                                repeat_delay=1000)

ani.save('anim.gif', writer="imagemagick")
ani.save('anim.mp4', writer="ffmpeg")
plt.show()

anim.gif

Da der Rückgabetyp der Funktion pyplot.imshow ein AxesImage-Objekt ist, erstellen Sie eine Liste und fügen Sie sie der Liste hinzu.

im = plt.imshow([[]])
print type(im) # matplotlib.image.AxesImage
ims.append([im])

Recommended Posts

Einfache Animation mit matplotlib (mp4, gif)
Animation mit matplotlib
Animation mit matplotlib
Erstellen Sie eine Plotanimation mit Python + Matplotlib
Visualisieren Sie den Hohlraumfluss mit matplotlib und speichern Sie ihn als GIF-Animation
Einfache japanische Schrifteinstellung mit matplotlib
Zeichnen Sie einfach Diagramme mit matplotlib
Erstellen Sie eine GIF-Animation mit Ordnerüberwachung
Histogramm mit Matplotlib
Erstellen Sie eine Animation mit matplotlib
Die Basis der Graphentheorie mit Matplotlib-Animation
Easy Grad-CAM mit Pytorch-Gradcam
2-Achsen-Plot mit Matplotlib
Zeichnen Sie eine erdähnliche Flussanimation mit Matplotlib und Cartopy
Laden Sie mp4 einfach teilweise mit Python und youtube-dl herunter!
Heatmap von Python + matplotlib
Banddiagramm mit Matplotlib
Echtzeitzeichnung mit Matplotlib
Verschiedene Farbleisten mit Matplotlib
3D-Plot mit Matplotlib
Einfaches Debuggen mit ipdb
Stellen Sie die Achsen mit matplotlib ein
Einfache TopView mit OpenCV
[IOS] GIF-Animation mit Pythonista3. Ich war süchtig danach.
LGTM - Erstellen Sie LGTM-Bilder mit Videos und Fotos und geben Sie GIF-Animationen aus
Schneiden Sie mp4-Videos mit python-ffmpeg
Einfache toxische Umgebung mit Jenkins
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Erstellen Sie ein 3D-GIF mit Python3
Diagrammzeichnungsmethode mit matplotlib
Einfache Ordnersynchronisation mit Python
Zeichnen Sie Excel-Daten mit matplotlib (2)
Stapelbares Barplot mit Matplotlib
Einfache Python-Kompilierung mit NUITKA-Utilities
Einfacher HTTP-Server mit Python
Einfache Proxy-Anmeldung mit Django-Hijack
Wählen Sie mit matplotlib abgestufte Farben aus
Blasensortierung mit flauschiger Animation
Animieren Sie mehrere Diagramme mit matplotlib