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

Python Discussion :

Problème pour une animation avec Matplotib [Python 3.X]


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 5
    Points : 0
    Points
    0
    Par défaut Problème pour une animation avec Matplotib
    Bonjour.
    Je sais pas trop si je peux poster mon message ici.
    Voila je suis en école d'ingénieur et on m'a demander de modifier une animation dans laquelle on voit un point bleu parcourir l'écran de gauche à droite de façon rectiligne.
    L'animation tourne avec python 3.3 et le module Matplotib.
    J'ai donc voulut attribuer à une variable une image et imposer au point de devenir cette variable.
    Pour fixé le fond et le point je me suis inspiré de cette méthode : https://www.courspython.com/animations.html

    Voilà deux semaines que je suis dessus et que je n'y arrive pas.
    Ce n'est pas dans mon habitude de demander de l'aide pour les cours sur un forum mais voilà, je suis bloqué.
    Pourriez vous regardez le code et me dire se qui ne colle pas.
    Merci

    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
    import scipy.integrate as integrate
    import matplotlib.animation as animation
    from math import exp
    import numpy as np
    from pylab import *
    import os as os
    import matplotlib.image as mpimg
     
    os.getcwd()
    os.chdir("C:/Users/Quentin/Desktop")
    a=mpimg.imread('image qui bouge.bmp')
    b=mpimg.imread('fond de matplotib.bmp')
     
    x=[]
    y=[]
     
    xmin = 0
    xmax = 5
    nbx = 100
     
    x = linspace(xmin, xmax, nbx)
     
    for z in range (0,50):
        y.append(z/6.67)
        x.append(integrate.simps(59.46*(np.exp(y)-1)/(np.exp(y)+1)))
     
    dt=0.0001
    fig=figure()
    line,=plot([],[],'a',ms=10)
    xlim(0,2000)
    ylim(-1,1)
     
    def init():
        line.set_data([],[],'b')
        return line,
     
    def animate(i):
        t=i*dt
        xx=x[i]
        y=0.0
        line.set_data(xx,y)
        return line,
     
    ani=animation.FuncAnimation(fig,animate,init_func=init,frames=40,
                                blit=False,interval=100,
                                repeat=False)
     
    show()

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Salut.
    Désolé de te dire que tout doit être repris. Deux semaines pour ça
    Il y a de très bon exemples sur le site de matplotlib, et un tutoriel sur developpez.
    Je donne un exemple proche de ce qui est attendu :
    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
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
     
    import matplotlib.pyplot as plt
    import matplotlib.animation as animation
     
    fig = plt.figure()
    line, = plt.plot(0, 0, 'bo', markersize=20)
    plt.xlim(0, 100)
    plt.ylim(-1, 1)
     
    def init():
        line.set_data(0, 0)
        return line,
     
    def animate(i):
        line.set_data(i, 0)
        return line,
     
    ani = animation.FuncAnimation(
        fig, 
        animate, 
        init_func=init, 
        frames=100,
        interval=1, 
        repeat=True,
    )
    plt.show()

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Merci de ta reponse.
    Dans le code que tu a posté, comment tu défini les images afin que le fond de matplotib soit fixé et que le point qui bouge soit une autre image ?

    Merci d'avance

    (et oui deux semaines, l'informatique n'est pas notre matière principal, je la pousse un peu plus parce que c'est qu'elle que choee que j'aime bien, mais que quand j'ai le temps)

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Dans le code que tu a posté, comment tu défini les images afin que le fond de matplotib soit fixé et que le point qui bouge soit une autre image ?
    Je ne suis pas sur de comprendre ta question.
    Par défaut, le fond est fixe. C'est l'objet créé qui se déplace grace à la fonction animate.
    J'ai créé un cercle bleu avec l'appel à plt.plot. Je garde la référence de l'objet dans line.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Bonsoir.
    En faitr, je voudrai que le fond devienne une image .bmp ou .png, et que l'objet en mouvement soit une autre image ( ici mon but c'est de faire un skieur vue du dessus)

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Ce n'est pas le plus simple.
    J'aurais plutôt choisi de le faire avec tkinter. Afficher les images dans un Canvas.
    Avec matplotlib, il faut manipuler des objets assez avancés (artist). Voici un exemple :
    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
    import matplotlib.pyplot as plt
    from matplotlib.offsetbox import OffsetImage
    from matplotlib._png import read_png
     
    fig, ax = plt.subplots()
     
    bg = read_png('images/mountain.png')
    mountain = OffsetImage(bg, zoom=1.)
     
    im = read_png("images/mario.png")
    mario = OffsetImage(im, zoom=0.2)
     
    ax.add_artist(mountain)
    ax.add_artist(mario)
     
    mario.set_offset([120, 250])
     
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)
     
    plt.draw()
    plt.show()
    Le mouvement se fait en modifiant l'offset.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Re bonjour. Me revoila après des vacances bien mérité.
    Je suis toujours avec le même programme, mais je n'arrive pas a modifier mon OffsetImage de façon a se que mon skieur avance de
    façon horizontale : il n’apparaît même plus.

    De plus, mon fond est mal placer et même en modifiant le zoom, l'image n'est pas cadré.

    Je m'en remet a vous.
    Merci d'avance
    Remoi
    Images attachées Images attachées   
    Fichiers attachés Fichiers attachés
    • Type de fichier : py test.py (848 octets, 67 affichages)

  8. #8
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Salut,
    Tu as tout ce qu'il faut avec mes deux messages pour finir seul.
    A regarder ton code, tu ne maîtrises pas assez les bases de Python pour te lancer dans ce projet. Commence pour lire un cours. Le Swinnen est une référence.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    C'est bon j'ai réussit a obtenir se que je voulais.
    Je te remercie pour l'aide. Je place le sujet en résolut

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/10/2008, 14h27
  2. problème pour une calculatrice
    Par Anthobask dans le forum C
    Réponses: 4
    Dernier message: 19/12/2005, 21h11
  3. Quels composants pour une synchro avec palm ?
    Par tipiweb dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/11/2005, 15h06
  4. Quelle taille en pixels pour une animation d'un site web?
    Par ned-flanders dans le forum Flash
    Réponses: 6
    Dernier message: 06/10/2005, 11h26
  5. [FLASH MX2004] Lancer une anim avec des paramètres ??
    Par gchanteux dans le forum Flash
    Réponses: 4
    Dernier message: 23/03/2005, 17h49

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