[PYTHON] Créer une animation gif à partir d'un fichier de numéro de série avec matplotlib

** Ce que vous pouvez faire en lisant cet article ** Matplotlib peut créer une animation gif à partir de fichiers de données de numéro de série

Je peux maintenant faire des vidéos avec gnuplot (Créer des vidéos à partir des données du numéro de série avec gnuplot), mais je veux quand même pouvoir faire des vidéos avec matplotlib. !!

--Environnement - macOS mojave 10.14.6 - Python 3.7.5

Tout d'abord, animons la courbe sinusoïdale comme une pratique. La méthode de base pour créer une animation gif est décrite en détail dans l'article suivant.

Voici une référence pour les paramètres de base. Animation facile avec matplotlib (mp4, gif)

La méthode de dessin est brièvement écrite ici et est facile à comprendre. Créer une animation avec matplotlib

gif_anime.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

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

fig = plt.figure()
ax = fig.add_subplot(111)
#Liste pour mettre l'objet Line2D
ims = []

for i in range(10):
    x = np.array(range(60))
    Y  = np.sin(x/5 - i * 5)
    im = ax.plot(Y, color='blue')
    ims.append(im) #Ajouter chaque image de cadre aux ims

#Génération d'animation
ani = animation.ArtistAnimation(fig, ims, interval=100, blit=True, repeat_delay=1000)

#sauvegarder
ani.save("sample.gif", writer="pillow")

#afficher
plt.show()

Vous pouvez créer une animation gif comme celle-ci (si cela ne fonctionne pas, cliquez dessus pour l'ouvrir dans une autre fenêtre. Lorsque je l'ai téléchargé sur Qiita, il a cessé de tourner à l'infini, mais si je le fais à portée de main, il bouclera à l'infini). sample.gif

Des options telles que ʻinterbal`` repeat_delay` sont détaillées dans l'article suivant. Créer une animation graphique (Matplotlib) avec Python (ArtistAnimation)

Ensuite, essayons ** "animer le fichier du numéro de série du résultat du calcul" ** tel qu'utilisé dans la présentation de la recherche. Ce serait facile si je pouvais dessiner l'animation que j'ai mentionnée plus tôt. Tout ce que vous avez à faire est de changer la partie pour du code ci-dessus pour lire le résultat du calcul.

anime_gif2.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

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

fig = plt.figure()
ax = fig.add_subplot(111)
#Liste pour mettre l'objet Line2D
ims = []

#Paramètres d'axe, etc.
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_xlim(0.1, 10.0)
ax.set_ylim(1, 5000)

#Nombre de fichiers de résultats de calcul
filenum = 10
for i in range(filenum):
    r, sd = np.loadtxt("./data%01d.dat" % (i), comments='#', unpack=True) #Lecture répétée de data00 à data09
    im = ax.plot(r, sd, "-", color='blue', linewidth=1)
    ims.append(im) #Ajouter chaque image de cadre aux ims

#Génération d'animation
ani = animation.ArtistAnimation(fig, ims, interval=500, blit=True, repeat_delay=100)

#sauvegarder
ani.save("anime.gif", writer="pillow")

#afficher
plt.show()

sample_anime3.gif

Cependant, dans ce cas, la liste appelée im sera préparée avant le dessin. Si le nombre de fichiers à lire augmente, et si vous souhaitez réaliser une animation 3D, le dessin devient difficile. Par conséquent, je voudrais dessiner chaque image de l'animation.

anime_gif3.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

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

fig = plt.figure()
ax = fig.add_subplot(111)

artists = []
im, = ax.plot([], [])

#Paramètres d'axe, etc.
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_xlim(0.1, 10.0)
ax.set_ylim(1, 5000)

#Nombre de fichiers de résultats de calcul
filenum = 10

#Appelez cette fonction à plusieurs reprises pour dessiner
#J'augmente de 1 à chaque fois que vous appelez
def update_anim(i):
    r, sd = np.loadtxt("./data%01d.dat" % (i), comments='#', unpack=True) #Lecture répétée de data00 à data09
    im.set_data(r, sd)
    return im,

ani = FuncAnimation(fig, update_anim, interval=500, blit=True, frames = filenum, repeat_delay=100)

#sauvegarder
ani.save("anime.gif", writer="pillow")

#afficher
plt.show()

référence: Création d'animation flexible à l'aide d'animation.FuncAnimation de matplotlib

Vous pouvez maintenant dessiner de belles animations avec matplotlib.

Recommended Posts

Créer une animation gif à partir d'un fichier de numéro de série avec matplotlib
Créer une animation GIF avec surveillance des dossiers
Animation facile avec matplotlib (mp4, gif)
Faire une figure partiellement zoomée avec matplotlib
Animation avec matplotlib
Animation avec matplotlib
Lire ligne par ligne à partir d'un fichier avec Python
Faire une copie d'un fichier Google Drive à partir de Python
[python] Remplacez le nom du fichier image par un numéro de série
Accédez au fichier avec un chemin relatif à partir du script d'exécution.
Visualisez l'écoulement de la cavité avec matplotlib et enregistrez-le en tant qu'animation gif
Faites une loterie avec Python
Faire un feu avec kdeplot
Comment faire une commande pour lire le fichier de paramètres avec pyramide
Lisez le fichier en Python avec un chemin relatif depuis le programme
Obtenez les conditions de simulation OCTA à partir d'un fichier et enregistrez avec les pandas
Créer une animation de tracé avec Python + Matplotlib
Manuel de graphisme Python avec Matplotlib.
Créer un identifiant Santa à partir d'une image du Père Noël
Faisons une interface graphique avec python.
Faites un son avec le notebook Jupyter
Créer un fichier deb avec Docker
Dessinez un graphique lâche avec matplotlib
Faisons une rupture de bloc avec wxPython
python / Créer un dict à partir d'une liste.
Créer un système de recommandation avec python
Créer un fichier de nombres aléatoires de 1 Mo
Créer un filtre avec un modèle django
Faisons un graphe avec python! !!
Faisons un spacon avec xCAT
Créer un itérateur de modèle avec PySide
Faire un joli graphique avec plotly
Écrire un histogramme empilé avec matplotlib
Créer un téléchargeur de fichiers avec Django
2.Faites un arbre de décision à partir de 0 avec Python et comprenez-le (2. Bases du programme Python)
Extraire les lignes qui correspondent aux conditions d'un fichier texte avec python
J'ai trouvé un moyen de créer un modèle 3D à partir d'une photo.
[Bash] Commande pour écrire des fichiers ligne par ligne dans un fichier de numéro de série [Une ligne (?)]
Créez un arbre de décision à partir de 0 avec Python et comprenez-le (4. Structure des données)
Créer un fichier power simple avec Python
Faisons un jeu de shiritori avec Python
Créer un lecteur vidéo avec PySimpleGUI + OpenCV
[Note] Lire un fichier depuis un autre répertoire
Créer une animation GIF d'art ASCII avec Python
Créez un simulateur de gacha rare avec Flask
Créez un pipeline de notebook avec Kedro + Papermill
Créer un gros fichier texte avec shellscript
Créez un quiz de dessin avec kivy + PyTorch
Faisons la voix lentement avec Python
Créez un classificateur en cascade avec Google Colaboratory
Faisons un langage simple avec PLY 1
Créer une machine virtuelle avec un fichier YAML (KVM)
[Python] Rendons matplotlib compatible avec le japonais
Faire un circuit logique avec Perceptron (Perceptron multicouche)
Faire Oui Non Popup avec Kivy
Créer un fichier deb à partir d'un package python
Importez des vidéos de numéro de série avec Aviutl
Faire une minuterie de lavage-séchage avec Raspberry Pi
Créez un framework Web avec Python! (1)
Faisons une IA à trois yeux avec Pylearn 2