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 :

Graphique 3D dynamique avec plot_trisurf()


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Par défaut Graphique 3D dynamique avec plot_trisurf()
    Bonjour !

    Je travaille sur un programme Python dont le but est d'afficher une figure 3D d'une membrane vibrante. J'ai obtenu préalablement les coordonnées dans l'espace de certains points de la membrane. J'ai déjà réussi à afficher la figure en 3D à un instant fixé en utilisant la fonction .plot_trisurf pour passer d'un nuage de points à une surface.

    J'essaie maintenant d'afficher une figure 3D dynamique mais j'ai beaucoup de mal. J'ai essayé de m'inspirer d'exemples pour faire mon programme mais je n'ai pas trouvé d'exemples correspondant à ma situation, où il faudrait combiner à la fois la 3D et gérer la fonction .plot_trisurf
    En plus, afficher des figures en 3D est assez nouveau pour moi et je ne comprends pas exactement le rôle de chaque ligne dans mon code (donc j'ai du mal à savoir ce qui ne va pas )

    Voilà mon code pour le graphique 3D à un instant donné (celui-ci fonctionne comme voulu) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def graphe_freq_propre(X): #je note ici X, les arguments réellement utilisés n'ont pas d'importance dans le tracé mais uniquement dans le calcul des points
        Lx,Ly,Lz=liste_coordonnees(X)
        fig = plt.figure()
        ax = fig.gca(projection='3d')
        ax.plot_trisurf(Lx, Ly, Lz, cmap=cm.jet, linewidth=0.2)
        plt.show()
    Voilà mon code adapté à une situation dynamique. Quand je lance le programme, la fenetre de plot s'ouvre mais reste vide : je pense que les calculs ne suivent pas ...

    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
    def graphe_freq_propre_dyn(f,frame,X): #f : fréquence // frame : nombre d'images cherchées
        omega = 2*pi*f #j'en ai besoin uniquement dans les calculs des coordonnées
        past=1/(f*frame)
        Lframex,Lframey,Lframez=[],[],[] #liste des coordonnées : une entrée = une image
        for i in range(frame): #calcul de toutes les coordonnées nécessaires
            Lx,Ly,Lz=liste_coordonnees(X)
            Lz=[cos(omega*past)*i for i in Lz] #fin du calcul des coordonnées, la dépendance temporelle de la fonction est en cos(omega*t)
            if i==0: #on stocke les coordonnées selon x et y qu'une fois (ne changent pas)
                Lframex+=Lx
                Lframey+=Ly
            Lframez.append(Lz)
        plt.ion()
        fig = plt.figure()
        ax = fig.gca(projection='3d')
        plt.show()
        for i in range (10) : #pour observer plus d'une période
            for j in range(frame):
                ax.plot_trisurf(Lframex, Lframey, Lframez[j], cmap=cm.jet, linewidth=0.2)
                plt.draw()
                time.sleep(0.5)
    Est-il possible d'alléger les calculs que doit faire le programme, en utilisant une autre méthode que .plot_trisurf pour approximer une surface passant à travers les points ?
    Ou existe-il un moyen de faire les calculs nécessaires pour plot_trisurf sans afficher directement le graphe (afin d'avoir un tracé fluide une fois tous les calculs fait, quitte à avoir un temps de calcul très grand ...) ?
    Et surtout : comment pourrais-je adapter le code pour utiliser la fonction animation (qui est, je suppose, plus adaptée ) ?

    Merci pour votre temps et votre aide !

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 5
    Par défaut
    Juste à titre d'information, j'obtiens ce genre de figure avec mon programme "statique" (en sachant que j'ai rajouté quelques lignes de code pour la mise en forme)

    Nom : graphe_freq_propre,3,138,0.0100,100.0,1.00,0.150,30,30.png
Affichages : 2967
Taille : 162,2 Ko

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/04/2014, 22h12
  2. [XL-2007] Graphique croisé dynamique avec histo empilé et courbe
    Par Lilou2903 dans le forum Excel
    Réponses: 9
    Dernier message: 06/03/2014, 21h09
  3. Réponses: 1
    Dernier message: 27/07/2011, 13h41
  4. Réponses: 4
    Dernier message: 23/07/2009, 11h01
  5. Réponses: 2
    Dernier message: 22/12/2008, 10h40

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