[PYTHON] Animation mit matplotlib

Rotationsanimation mit matplotlib

Einführung

matplotlib kann nicht nur Grafiken, sondern auch Animationen erstellen. Die Hauptfunktionen der Animation sind ArtistAnimation und FuncAnimation. Hier wird FuncAnimation verwendet, um die Rotationsanimation wie unten gezeigt anzuzeigen.

Kommentar

Modulimport

import.py


import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Circle
import matplotlib.animation as animation
from IPython.display import HTML

Diagramme erstellen und Kreise anzeigen

makefig.py



fig, ax = plt.subplots(figsize=(6,6))

#plot circle
c1 = Circle((0, 0), 5,color='0.75')
ax.add_patch(c1)
c2 = Circle((0, 0), 4.5,color='0.7')
ax.add_patch(c2)
c3 = Circle((0, 0), 4,color='0.65')
ax.add_patch(c3)
c4 = Circle((0, 0), 3.5,color='0.6')
ax.add_patch(c4)
c5 = Circle((0, 0), 3,color='0.55')
ax.add_patch(c5)
c6 = Circle((0, 0), 2.5,color='0.5')
ax.add_patch(c6)
c7 = Circle((0, 0), 2,color='0.45')
ax.add_patch(c7)
c8 = Circle((0, 0), 1.5,color='0.4')
ax.add_patch(c8)
c9 = Circle((0, 0), 1,color='0.35')
ax.add_patch(c9)

Erstellen Sie eine Feige mit plt.subplots und zeigen Sie 9 Kreise mit Circle an.

Parameter zum Verschieben des Kreises

param.py


def f(a,t):
    return np.cos(a*t)

def g(b,t,sig):
    return np.sin(b*t+sig)

t = np.linspace(0,2*np.pi,200)
sig = np.pi/4

x=f(3,t)
y=g(2,t,sig)
x1 = np.hstack([x,np.ones(8)])
y1 = np.hstack([y,np.ones(8)*np.sin(sig)])
x2 = np.hstack([np.ones(1),x,np.ones(7)])
y2 = np.hstack([np.ones(1)*np.sin(sig),y,np.ones(7)*np.sin(sig)])
x3 = np.hstack([np.ones(2),x,np.ones(6)])
y3 = np.hstack([np.ones(2)*np.sin(sig),y,np.ones(6)*np.sin(sig)])
x4 = np.hstack([np.ones(3),x,np.ones(5)])
y4 = np.hstack([np.ones(3)*np.sin(sig),y,np.ones(5)*np.sin(sig)])
x5 = np.hstack([np.ones(4),x,np.ones(4)])
y5 = np.hstack([np.ones(4)*np.sin(sig),y,np.ones(4)*np.sin(sig)])
x6 = np.hstack([np.ones(5),x,np.ones(3)])
y6 = np.hstack([np.ones(5)*np.sin(sig),y,np.ones(3)*np.sin(sig)])
x7 = np.hstack([np.ones(6),x,np.ones(2)])
y7 = np.hstack([np.ones(6)*np.sin(sig),y,np.ones(2)*np.sin(sig)])
x8 = np.hstack([np.ones(7),x,np.ones(1)])
y8 = np.hstack([np.ones(7)*np.sin(sig),y,np.ones(1)*np.sin(sig)])
x9 = np.hstack([np.ones(8),x])
y9 = np.hstack([np.ones(8)*np.sin(sig),y])

Der Kreis bewegt sich entlang der Lisaju-Kurve. Verwenden Sie np.hstack usw., um die Bewegung jedes Kreises nach und nach zu verschieben.

Anzeigebereichseinstellung

xlimylim.py


xmin, xmax = xlim = x.min()-5, x.max()+5
ymin, ymax = ylim = y.min()-5, y.max()+5
ax.set(xlim=xlim, ylim=ylim, autoscale_on=False)
ax.set_aspect('equal')
ax.axis('off')

Animationseinstellungen, Speichern, Markierungen

xlimylim.py


def init():   
    return c1, c2, c3, c4, c5, c6, c7,c8,c9,

def update(num):
    c1.set_center([x1[num],y1[num]])
    c2.set_center([x2[num],y2[num]])
    c3.set_center([x3[num],y3[num]])
    c4.set_center([x4[num],y4[num]])
    c5.set_center([x5[num],y5[num]])
    c6.set_center([x6[num],y6[num]])
    c7.set_center([x7[num],y7[num]])
    c8.set_center([x8[num],y8[num]])
    c9.set_center([x9[num],y9[num]])
    
    return c1, c2, c3, c4, c5, c6, c7,c8,c9

ani = animation.FuncAnimation(fig, update, init_func=init,interval = 20, frames = 208)
ani.save('Tunnel_animation.mp4', writer="ffmpeg",dpi=100)
HTML(ani.to_html5_video())

init ist der erste Prozess, der ausgeführt wird, wenn die Animation ausgeführt wird. Da hier nichts unternommen wird, wird nur der Kreis zurückgegeben. Da update eine Funktion ist, die für die Animation ausgeführt wird, wird jeder Kreis von set_center verschoben.

Mit animation.FuncAnimation () können Sie das Intervall zwischen den Abbildungen festlegen. Die Einheit ist ms. In Frames können Sie festlegen, wie oft die Aktualisierungsfunktion ausgeführt wird.

Sie können die Animation mit ani.save ('filename.mp4', writer = "ffmpeg", dpi = 100) in der angegebenen Auflösung speichern. Wenn ffmpeg nicht enthalten ist

ffmpeg.py


conda install -c conda-forge ffmpeg

Lassen Sie es uns einfügen. Sie können Animationen in Jupyterlab und Notebook mit HTML (ani.to_html5_video ()) anzeigen.

Referenz

https://discourse.matplotlib.org/t/tunnel-animation/20733

Werbung

Ich habe Artikel über verschiedene Matplotlib-Animationen auf Blog geschrieben. Bitte sehen Sie, ob Sie interessiert sind.

https://sabopy.com/category/py/matplotlib-animation/

Recommended Posts

Animation mit matplotlib
Animation mit matplotlib
Erstellen Sie eine Plotanimation mit Python + Matplotlib
Japanisch mit Matplotlib
Histogramm mit Matplotlib
Erstellen Sie eine Animation mit matplotlib
Einfache Animation mit matplotlib (mp4, gif)
2-Achsen-Plot mit Matplotlib
Heatmap von Python + matplotlib
Banddiagramm mit Matplotlib
Lernen Sie mit Chemo Informatics Matplotlib
Echtzeitzeichnung mit Matplotlib
Verschiedene Farbleisten mit Matplotlib
3D-Plot mit Matplotlib
Stellen Sie die Achsen mit matplotlib ein
Die Basis der Graphentheorie mit Matplotlib-Animation
Zeichnen Sie Excel-Daten mit matplotlib (1)
Versuchen Sie es mit matplotlib mit PyCharm
Animation der Diffusionsgleichung mit NumPy
Zeichnen Sie eine erdähnliche Flussanimation mit Matplotlib und Cartopy
Diagrammzeichnungsmethode mit matplotlib
Zeichnen Sie Excel-Daten mit matplotlib (2)
Stapelbares Barplot mit Matplotlib
Wählen Sie mit matplotlib abgestufte Farben aus
Blasensortierung mit flauschiger Animation
Animieren Sie mehrere Diagramme mit matplotlib
Erstellen Sie mit matplotlib eine GIF-Animation aus einer Seriennummerndatei
Visualisieren Sie den Hohlraumfluss mit matplotlib und speichern Sie ihn als GIF-Animation
Python-Grafikhandbuch mit Matplotlib.
Inferenz- und Ergebnisanzeige mit Tensorflow + matplotlib
Japanisieren Sie Matplotlib mit Alpine mit Docker
[IOS] Zerlegen Sie die GIF-Animation mit Pythonista3.
Zeichne Japanisch mit matplotlib auf Ubuntu
Zeichnen Sie mit matplotlib ein loses Diagramm
Vielseitige Datenerfassung mit Pandas + Matplotlib
Heatmap mit Dendrogramm in Python + Matplotlib
Zeichnen Sie einfach Diagramme mit matplotlib
Kontinuierliche Farbe mit Matplotlib-Streudiagramm
Zeichne Riapnov Fractal mit Python, matplotlib
Wenn matplotlib nicht mit python2.7 funktioniert
Führen Sie mit Python, matplotlib, einen logarithmischen Normalwahrscheinlichkeitsplot durch
Schreiben Sie ein gestapeltes Histogramm mit matplotlib
Implementieren Sie "Data Visualization Design # 2" mit matplotlib
[Einführung in Matplotlib] Achsen 3D-Animation: Ich habe mit 3D-Lisaju-Figuren gespielt ♬
Wie man mit matplotlib mehrere Figuren betitelt
[Python] Legen Sie den Diagrammbereich mit matplotlib fest
Passen Sie den Abstand zwischen den Figuren mit Matplotlib an
Flexible Animationserstellung mit Animation.FuncAnimation von matplotlib
Matplotlib Galerie
Versuchen Sie, mit matplotlib eine Normalverteilung zu zeichnen
Matplotlib-Memo
Machen Sie mit matplotlib eine teilweise gezoomte Figur
Schreiben Sie SVG-Diagramme mit Matplotlib mit Heroku
Japanisches Diagramm mit VS Code + matplotlib anzeigen
Stellen Sie die Farbe der xticklabels individuell mit matplotlib ein
[Python] Lassen Sie uns matplotlib mit Japanisch kompatibel machen
Zeichnen Sie Dreiecksfunktionen mit Numpy und Matplotlib
matplotlib Zusammenfassung
Zeigen Sie Markierungen über dem Rand mit matplotlib an
Erstellen Sie eine GIF-Animation mit Ordnerüberwachung