Créer une animation de tracé avec Python + Matplotlib

code

import numpy
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import mpl_toolkits.mplot3d.axes3d as p3

def plot_3D_animation(X, Y, Z, n_frame=None,
                      xlim=None, ylim=None, zlim=None,
                      step=None, saveanime=None, show=True):
    """3D plotting animation"""
    fig = plt.figure()
    ax = p3.Axes3D(fig)

    if step is None:
        step = 1
    X = X[range(0, len(X), step)]
    Y = Y[range(0, len(Y), step)]
    Z = Z[range(0, len(Z), step)]

    data = [numpy.vstack((X, Y, Z))]

    lines = [ax.plot(dat[0, 0:1], dat[1, 0:1],
                     dat[2, 0:1])[0] for dat in data]

    # Setting the axes properties
    if xlim is None:
        ax.set_xlim3d([X.min(), X.max()])
    elif len(xlim) == 2:
        ax.set_xlim3d(xlim)
    ax.set_xlabel('X')
    if ylim is None:
        ax.set_ylim3d([Y.min(), Y.max()])
    elif len(ylim) == 2:
        ax.set_ylim3d(ylim)
    ax.set_ylabel('Y')
    if zlim is None:
        ax.set_zlim3d([Z.min(), Z.max()])
    elif len(zlim) == 2:
        ax.set_zlim3d(zlim)
    ax.set_zlabel('Z')
    ax.set_title('3D animation')
    ax.view_init(-10, 30)

    def update_lines(num, dataLines, lines):
        for line, data in zip(lines, dataLines):
            line.set_data(data[0:2, :num])
            line.set_3d_properties(data[2,:num])
        return lines

    if n_frame is None:
        n_frame = len(X)

    # Creating the Animation object
    anim = animation.FuncAnimation(fig,
                                   update_lines,
                                   n_frame,
                                   fargs=(data, lines),
                                   interval=1,
                                   blit=False)

    if type(saveanime) == str:
        writer = animation.FFMpegWriter()
        anim.save(saveanime, writer=writer)

    if show is True:
        plt.show()

    plt.clf()
    plt.close()

Comment utiliser

>>> import numpy as np
>>> X, Y, Z = np.array([1,2,3]), np.array([2,3,4]), np.array([4,5,6])
>>> plot_3D_animation(X, Y, Z)

Exemple d'utilisation

Recommended Posts

Créer une animation de tracé avec Python + Matplotlib
Créer un diagramme de dispersion 3D avec SciPy + matplotlib (Python)
Animation avec matplotlib
Animation avec matplotlib
Effectuer un tracé de probabilité normale logarithmique avec Python, matplotlib
Graphique 2 axes avec Matplotlib
Carte thermique par Python + matplotlib
Graphique 3D avec matplotlib
Créer un gif 3D avec python3
Bar plot empilable avec matplotlib
Créer un répertoire avec python
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
Manuel de graphisme Python avec Matplotlib.
Créer Awaitable avec l'API Python / C
Créons un diagramme PRML avec Python, Numpy et matplotlib.
Créez un environnement virtuel avec Python!
Heatmap avec dendrogramme en Python + matplotlib
Couleur en continu avec le diagramme de dispersion matplotlib
Dessinez Riapnov Fractal avec Python, matplotlib
Quand matplotlib ne fonctionne pas avec python2.7
Animation facile avec matplotlib (mp4, gif)
Créer un décorateur de fonction Python avec Class
[Python] Définissez la plage du graphique avec matplotlib
Créez automatiquement la documentation de l'API Python avec Sphinx
Créez wordcloud à partir de votre tweet avec python3
Créez une image factice avec Python + PIL.
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Créez rapidement un fichier Excel avec Python #python
Créer un environnement Python + uWSGI + Nginx avec Docker
Créer et décrypter du code César avec python
Créez diverses vidéos Photoshop avec Python + OpenCV ③ Créez diverses vidéos Photoshop
[Python] Rendons matplotlib compatible avec le japonais
Créer un fichier Excel avec Python + matrice de similarité
Créer un compteur de fréquence de mots avec Python 3.4
[Python] Créez rapidement une API avec Flask
Créez une application de mots anglais avec python
Créer un graphique avec des bordures supprimées avec matplotlib
FizzBuzz en Python3
Grattage avec Python
[Python] Parcelle de violon
Statistiques avec python
Grattage avec Python
Python avec Go
Les bases de #Python (#matplotlib)
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Mon matplotlib (Python)
Japonais avec matplotlib
Tracer CSV de données de séries temporelles avec une valeur unixtime en Python (matplotlib)
Bingo avec python