[PYTHON] Animation facile avec matplotlib (mp4, gif)

matplotlib.animation: Une bibliothèque de génération d'animation pratique basée sur matplotlib.

Installation

@mac


$ pip install matplotlib
$ brew install imagemagick #Pour enregistrer le gif
$ brew install ffmpeg #Pour enregistrer mp4

matplotlib.réparation rc


$ 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

Il existe deux types de fonctions qui génèrent une animation

Personnellement, l'animation d'artiste est plus facile à comprendre, donc je le recommande. FuncAnimation est plus flexible, mais je ne ressens aucun inconvénient avec Artist Animation.

ArtistAnimation

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

Notez qu'il est facile d'obtenir une erreur où l'argument artist doit être une liste de liste. (Les détails seront décrits plus tard)


Exemple 1: animation d'onde sinusoïdale

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

La fonction pyplot.plot peut tracer plusieurs graphiques à la fois, le type de retour est donc list.

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

Pour plus de clarté, le code principal ose décompresser pour récupérer l'objet Line2D, puis le changer en liste puis l'ajouter à la liste.

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

Vous pouvez enregistrer l'animation comme suit (toute personne qui aime gif ou mp4)

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

Exemple 2: Animation d'une image bidimensionnelle

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

Étant donné que le type de retour de la fonction pyplot.imshow est un objet AxesImage, créez-en une liste, puis ajoutez-le à la liste.

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

Recommended Posts

Animation facile avec matplotlib (mp4, gif)
Animation avec matplotlib
Animation avec matplotlib
Créer une animation de tracé avec Python + Matplotlib
Visualisez l'écoulement de la cavité avec matplotlib et enregistrez-le en tant qu'animation gif
Réglage facile de la police japonaise avec matplotlib
Dessinez facilement des graphiques avec matplotlib
Créer une animation GIF avec surveillance des dossiers
histogramme avec matplotlib
Faire une animation avec matplotlib
La base de la théorie des graphes avec l'animation matplotlib
Easy Grad-CAM avec pytorch-gradcam
Graphique 2 axes avec Matplotlib
Dessinez une animation de flux semblable à la Terre avec matplotlib et cartopy
Téléchargez facilement et partiellement mp4 avec python et youtube-dl!
Carte thermique par Python + matplotlib
Graphique de bande avec matplotlib
Dessin en temps réel avec matplotlib
Différentes barres de couleurs avec Matplotlib
Graphique 3D avec matplotlib
Débogage facile avec ipdb
Ajustez les axes avec matplotlib
TopView facile avec OpenCV
[IOS] Animation GIF avec Pythonista3. J'en étais accro.
LGTM --Composez des images LGTM avec des vidéos et des photos et produisez une animation GIF
Couper la vidéo mp4 avec python-ffmpeg
Environnement toxique facile avec Jenkins
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Créer un gif 3D avec python3
Méthode de dessin graphique avec matplotlib
Synchronisation facile des dossiers avec Python
Graphique des données Excel avec matplotlib (2)
Bar plot empilable avec matplotlib
Compilation facile de Python avec NUITKA-Utilities
Serveur HTTP facile avec Python
Connexion proxy facile avec django-hijack
Sélectionnez les couleurs en dégradé avec matplotlib
Tri à bulles avec animation moelleuse
Animer plusieurs graphiques avec matplotlib