IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques tierces Python Discussion :

animation sous MatPlotLib


Sujet :

Bibliothèques tierces Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 415
    Par défaut animation sous MatPlotLib
    bonjour
    je cherche à animer un rendu Matplotlib

    par exemple là, j'ai programmé le jeu de la vie sous forme de 0 et de 1
    pour l'afficher sous forme graphique j'utilise une séquence d'instructions que je ne comprend pas très bien mais qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fig, ax = plt.subplots()
    im = ax.imshow(L)
    L étant la liste de liste, donc le tableau, contenant mes 0 et mes 1
    (bon, j'aurais pu utiliser un numpy.array)
    j'ai ensuite une def qui actualise L

    maintenant, quand je fais mon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fig.tight_layout()
    plt.show()
    la fenêtre de la petite fusée s'affiche mais c'est figé

    je voudrais bien afficher cette fenêtre toutes les t secondes, avec à chaque fois une actualisation de L pour voir l'animation

    auriez vous une piste à me conseiller ?

    merci !

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Salut,

    Citation Envoyé par elodouwen Voir le message
    auriez vous une piste à me conseiller ?
    Chercher sur Internet comment faire des animations avec matplotlib serait un bon début...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 415
    Par défaut
    okkj'ai cherché
    j'ai mélangé un code trouvé sur internet avec le mien
    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    #on manipule une liste de lignes
    #L[i,j] sera compris si on l'ecrit L[j][i] dans le code Python
     
     
    h=8#hauteur
    n=10#largeur
     
    def creer_liste_vide():
        Ll=[]#point de depart
        for i in range(h):
            Ll.append([0]*n)#attention [[0]*n]*h pose des pb
        # car alors les lignes sont des repliques et se modifient
        # simultanement des qu'une d'elles est modifiee.
        return(Ll)
    """
    L=[[0]*n]#point de depart
    for i in range(h):
        L.append([0]*n)#attention [[0]*n]*h pose des pb
        # car alors les lignes sont des repliques et se modifient
        # simultanement des qu'une d'elles est modifiee.
    """
    L=creer_liste_vide()
     
    def autour(i,j):
        #0<i<n-1
        #0<j<h-1
        somme=L[j-1][i-1]+\
              L[j-1][i]+\
              L[j-1][i+1]+\
              L[j][i-1]+\
              L[j][i]+\
              L[j][i+1]+\
              L[j+1][i-1]+\
              L[j+1][i]+\
              L[j+1][i+1]
        ici=L[j][i]
        if(ici):#cas ici==1
            return((somme==2 or somme==3)*1)#le *1
            #pour avoir un int et non un bool
        else:#cas ici==0
            return((somme==3)*1)
     
    def nouvelle():
        Lnew=creer_liste_vide()
        for j in range(1,h-1):
            for i in range(1,n-1):
                Lnew[j][i]=autour(i,j)
        return(Lnew)
     
    def afficher(liste):
        for ligne in liste:
            print(ligne)
     
    motif=[\
        [0,0,0,0],\
        [0,0,1,1],\
        [0,1,0,1],\
        [0,1,1,1],\
        [1,1,0,1],\
        ]
    h_motif=len(motif)
    n_motif=len(motif[0])#en esperant que len(motif[i])=Cste
    h_depart=h//2-h_motif//2
    n_depart=n//2-n_motif//2
    h_i=0
    n_i=0
    while(h_i<h_motif):
        while(n_i<n_motif):
            L[h_i+h_depart][n_i+n_depart]=motif[h_i][n_i]
            n_i+=1
        h_i+=1
        n_i=0
        #print("uuu")
     
    def transfuser(L1,L2):
        #Li du type Li[j][i]
        for j in range(h):
            for i in range(n):
                L2[j][i]=L1[j][i]
     
    def animate(i):
        im = ax.imshow(L)
        transfuser(nouvelle(),L)
     
    #import numpy as np
    import matplotlib
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    from matplotlib.animation import FuncAnimation 
     
    fig, ax = plt.subplots()
    anim = FuncAnimation(fig, animate,\
                        # init_func = init,
                        frames = 10, interval = 1000, blit = True)
     
    ax.set_title(str(h)+" x "+str(n))
    fig.tight_layout()
    plt.show()
    il me parle, dans le code d'erreur, de "Artist objects"
    je ne comprend pas de quoi il s'agit
    j'avoue que là je peine un peu je ne sais plus comment attaquer la chose…

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    il me parle, dans le code d'erreur, de "Artist objects"
    je ne comprend pas de quoi il s'agit
    C'est peut être pour çà qu'il existe une documentation matplotlib (qui explique les différents objets des abstractions utilisées...).... et vous pouvez aussi demander à votre moteur de recherche favori "what is a matplotlib artist".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 415
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    C'est peut être pour çà qu'il existe une documentation matplotlib (qui explique les différents objets des abstractions utilisées...).... et vous pouvez aussi demander à votre moteur de recherche favori "what is a matplotlib artist".

    - W
    ok j'ai lu ici
    https://matplotlib.org/stable/tutori...e/artists.html

    a) je ne comprend pas pourquoi j'ai pu jusqu'à aujourd'hui faire des figures sans utiliser les objets "artist" ; on peut faire des figures avec ou sans utiliser des "Artist" ?
    b) je vous remercie, Christophe, d'avoirdéjà répondu deux fois ; je suis mal à l'aise sur les forums informatique ou contrairement aux forums maths, la réponse est souvent "lis la doc" ; or moi, cette page ci dessus c'estvraiment dur à déchiffrer
    c) j'ai beau lire et relire cette même page, je ne comprend toujours pas la phrase d'erreur que me renvoie mon programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RuntimeError: The animation function must return a sequence of Artist objects.
    merci de votre attention…

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    c) j'ai beau lire et relire cette même page, je ne comprend toujours pas la phrase d'erreur que me renvoie mon programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RuntimeError: The animation function must return a sequence of Artist objects.
    Dans le code que vous avez posté, il y a une fonction "animation" (définie comme telle parce que passée en argument à FuncAnimation).
    Et on peut constater que cette fonction ne retourne rien (puisqu'elle ne contient même pas le mot clé return).
    De plus, si vous avez sorti ce code d'un exemple qui fonctionne, la fonction (dans l'exemple) devrait retourner quelque chose dont on pourrait s'inspirer (à défaut de connaître les subtilités d'un Artist).

    Citation Envoyé par elodouwen Voir le message
    je suis mal à l'aise sur les forums informatique ou contrairement aux forums maths, la réponse est souvent "lis la doc" ; or moi, cette page ci dessus c'estvraiment dur à déchiffrer
    On peut poster du code qui "fonctionne" (une solution mais il y en a déjà plein sur Internet...) mais ça ne va pas vous aider à apprendre à le réaliser (ni à savoir chercher sur Internet ou à lire une documentation qui sont les problèmes principaux que vous avez et qui n'ont rien à voir avec Python "le langage").

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher les objets et les anim sous maya
    Par Asmod_D dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 15/05/2006, 02h43
  2. Problème de Gif animé sous IE
    Par nicolb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/03/2006, 17h11
  3. Gifs animés sous Win32 (VCL)
    Par ctrlaltsuppr dans le forum Composants VCL
    Réponses: 4
    Dernier message: 22/02/2006, 00h41
  4. Comment animer sous opengl ?
    Par AsmCode dans le forum OpenGL
    Réponses: 4
    Dernier message: 17/10/2005, 12h32
  5. Réponses: 14
    Dernier message: 09/08/2004, 13h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo