** Was Sie tun können, indem Sie diesen Artikel lesen **
Matplotlib kann GIF-Animationen aus Seriennummern-Datendateien erstellen
Ich kann jetzt Videos mit gnuplot erstellen (Videos aus Seriennummerndaten mit gnuplot erstellen), aber ich möchte trotzdem Videos mit matplotlib erstellen können. !!
--Umgebung - macOS mojave 10.14.6 - Python 3.7.5
Lassen Sie uns zunächst die Sinuskurve als Übung animieren. Die grundlegende Methode zum Erstellen einer GIF-Animation wird im nächsten Artikel ausführlich beschrieben.
Hier ist eine Referenz für die Grundeinstellungen. Einfache Animation mit matplotlib (mp4, gif)
Die Zeichenmethode wird hier kurz geschrieben und ist leicht zu verstehen. Animation mit matplotlib erstellen
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 zum Einfügen des Line2D-Objekts
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) #Fügen Sie jedes Einzelbild zu ims hinzu
#Animationsgenerierung
ani = animation.ArtistAnimation(fig, ims, interval=100, blit=True, repeat_delay=1000)
#sparen
ani.save("sample.gif", writer="pillow")
#Anzeige
plt.show()
Sie können eine GIF-Animation wie diese erstellen (wenn sie nicht funktioniert, klicken Sie darauf, um sie in einem anderen Fenster zu öffnen. Als ich es auf Qiita hochgeladen habe, hat es aufgehört, sich unendlich zu wiederholen, aber wenn ich es zur Hand mache, wird es sich unendlich wiederholen.
Optionen wie interbal`` repeat_delay
werden im nächsten Artikel ausführlich beschrieben.
Erstellen Sie eine Graph (Matplotlib) -Animation mit Python (ArtistAnimation)
Als nächstes versuchen wir, ** "die Seriennummerndatei des Berechnungsergebnisses zu animieren" **, wie sie in der Forschungspräsentation verwendet wird. Es wäre einfach, wenn ich die zuvor erwähnte Animation zeichnen könnte. Sie müssen lediglich den for-Teil des obigen Codes ändern, um das Berechnungsergebnis zu lesen.
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 zum Einfügen des Line2D-Objekts
ims = []
#Achseneinstellungen usw.
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_xlim(0.1, 10.0)
ax.set_ylim(1, 5000)
#Anzahl der Berechnungsergebnisdateien
filenum = 10
for i in range(filenum):
r, sd = np.loadtxt("./data%01d.dat" % (i), comments='#', unpack=True) #Lesen Sie wiederholt von data00 bis data09
im = ax.plot(r, sd, "-", color='blue', linewidth=1)
ims.append(im) #Fügen Sie jedes Einzelbild zu ims hinzu
#Animationsgenerierung
ani = animation.ArtistAnimation(fig, ims, interval=500, blit=True, repeat_delay=100)
#sparen
ani.save("anime.gif", writer="pillow")
#Anzeige
plt.show()
In diesem Fall wird die Liste mit dem Namen im jedoch vor dem Zeichnen erstellt. Wenn die Anzahl der zu lesenden Dateien zunimmt und Sie eine 3D-Animation erstellen möchten, wird das Zeichnen schwierig. Daher möchte ich jeden Frame der Animation zeichnen.
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([], [])
#Achseneinstellungen usw.
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_xlim(0.1, 10.0)
ax.set_ylim(1, 5000)
#Anzahl der Berechnungsergebnisdateien
filenum = 10
#Rufen Sie diese Funktion wiederholt auf, um zu zeichnen
#Ich erhöhe mich bei jedem Anruf um 1
def update_anim(i):
r, sd = np.loadtxt("./data%01d.dat" % (i), comments='#', unpack=True) #Lesen Sie wiederholt von data00 bis data09
im.set_data(r, sd)
return im,
ani = FuncAnimation(fig, update_anim, interval=500, blit=True, frames = filenum, repeat_delay=100)
#sparen
ani.save("anime.gif", writer="pillow")
#Anzeige
plt.show()
Referenz: Flexible Animationserstellung mit animation.FuncAnimation von matplotlib
Jetzt können Sie mit matplotlib wunderschöne Animationen zeichnen.
Recommended Posts