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

Interfaces Graphiques Discussion :

affichage de graphique dans une interface


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 25
    Points
    25
    Par défaut affichage de graphique dans une interface
    Bonjour,

    J'ai fait une interface graphique qui possède des axes pour afficher des graphiques.

    J'ai des boutons qui me permettent d'afficher des graphiques.

    Je voudrais que mes boutons me lancent des fonctions. Ces fonctions traces des graphiques.

    voici un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    %création des axes
    axes('XLim',[0,1],'YLim',[0,1],'position',[.2  0.1  .7  .8],'tag','graph');
     
    function bouton(obj,event)
    Mafonction %%dans cette fonction j'affiche des graphiques
    end
    Je ne sais pas si j'ai été très clair.
    Si je fais juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function bouton(obj,event)
    plot(sphere,'tag','graph') 
    end
    Ca marche parfaitement. Mais si mon bouton lance une fonction, ca ne marche plus??

    Merci

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Citation Envoyé par ant12oine
    ca ne marche plus
    C'est à dire? Ca ne fait rien, ca te renvoie un message d'erreur?

    A priori le problème vient du fait que ta fonction appelée ne connait pas le handle de ton axe (ou tu veux tracer les données), il faut donc soit le lui donner en argument d'entrée soit le récupérer à l'aide de la fonction FINDOBJ par exemple...

    Celà dit sans le message d'erreur, difficile de t'en dire plus...

    Bonne journée,
    Duf

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    merci de repondre si rapidement
    Je n'es pas de message d'erreur. Mon bouton lance ma fonction mais il n'y a pas d'affichage sur mes axes. En fait ma fonction fait une boucle et j'affiche des graphiques avec contour et imagesc. Ma fonction est dans un autre .m.

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Dans ce cas, je te conseille d'utiliser le debuggueur de MATLAB pour voir ce qui se passe à la ligne qui te permet d'afficher les courbes (si c'est bien les bonnes données par exemple...)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Je ne suis débutant concernant les interfaces graphiques donc j'ai tout de même quelques questions pour être sur que ce que j'ai fait soit correct.
    Mon interface a des boutons et un graphique.
    Pour la création des axes, j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    %création des axes
    axes('XLim',[0,1],'YLim',[0,1],'position',[.2  0.1  .7  .8],'tag','graph');
    Pour la création des boutons, j'ai fait par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    bouton_tracer = uicontrol('style','pushbutton','units','pixels','position',[20,400,60,30],...
        'string','Contour','callback',@tracer);
    Ce bouton par exemple trace un graphique. Voila ma fonction tracer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function contour(obj,event)
    Trace;%fonction contenu dans un autre fichier .m
    setappdata(0,'bouton_tracer',0);%cette commande je ne sais pas trop
    %ce qu'elle fait.
    end
    la fonction du bouton tracer appelle une autre fonction (Trace) dans laquelle je fait un plot par exemple. Le plot, dans ma fonction Trace, doit-il avoir l'option plot(...,'tag','graph')? De plus, dans ma fonction Trace, je fais une boucle et j'affiche plusieurs plot.

    Voila j'ai essayé d'expliquer au mieux. Merci

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    En fait quand je lance les tracés avec mon bouton, il ne se passe rien et quand je ferme mon interface graphique, il m'ouvre une fenetre et affiche mes plots!!!!

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    désolé de poster comme ca.
    Je viens de m'apercevoir de quelque chose.
    Quand j'utilise plot dans ma fonction Trace ca marche. Par contre, si je veux faire un mesh (en 3d), ca n'affiche plus rien. c'est peut etre parce que au debut je definis seulement 2 axes non?
    cordialement

  8. #8
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Euh je suis pas sur d'avoir tout bien compris (c'est sans doute la fatigue )

    Mais 2-3 points quand même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    setappdata(0,'bouton_tracer',0);%cette commande je ne sais pas trop
    %ce qu'elle fait.
    J'aime beaucoup l'utilisation de GET/SETAPPDATA mais la je vois pas bien à quoi ca peut te servir et surtout si tu ne sais pas à quoi ca sert: enlève-le...

    Pour le plot, tu peux lui assigner la propriété Tag à la valeur que tu souhaites mais je pense que tu fais une confusion, pour tracer ton plot dans un axe prédéfini, il faut utiliser le handles de l'axe en question, à priori tu as 2 solutions selon que tu disposes du handle de ton axe ou non:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    plot(mon_axe, ...);
    Mais pour celà, il faut récupérer le handle lors de la création de ton axe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mon_axe = axes('XLim',[0,1],'YLim',[0,1],'position',[.2  0.1  .7  .8],'tag','graph');
    Sinon une solution plus simple mais un peu dangereuse aussi (dans le cas où tu aurais plusieurs axes avec le même Tag):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    plot(findobj('Tag', 'graph'), ...);
    Voilà quelques éléments de réponse à tes questions (du moins j'espère...), il y a pas mal de choses, il faut prendre le temps de se pencher dessus pour l'adapter à ton code...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    merci pour la réponse, je vais essayer de suivre tes conseils.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    J'ai encore quelques petites questions.
    D'abord au début, je mets deux axes. Est ce que ca pose un problème si après je veux afficher un graphique dans R3 avec trois axes?

    Le handle mon_axe, est ce que je peux le mettre en option du plot qui est dans ma fonction contenu dans un autre fichier.m?

    Enfin, je voudrais utiliser d'autres choses que plot comme imagesc ou contour, ca ne pose pas de problème?

    merci

  11. #11
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Citation Envoyé par ant12oine
    D'abord au début, je mets deux axes. Est ce que ca pose un problème si après je veux afficher un graphique dans R3 avec trois axes?
    Qu'entends-tu par 2 ou 3 axes? Tu veux dire des graphes 2D ou 3D? Dans ce cas, il n'y a pas franchement de différence pour MATLAB, les graphes se font de la même manière (il n'y a que la fonction pour tracer le graphe qui change...)


    Citation Envoyé par ant12oine
    Le handle mon_axe, est ce que je peux le mettre en option du plot qui est dans ma fonction contenu dans un autre fichier.m?
    Pour le handle, tu peux tout à fait l'utiliser dans une autre fonction, le principal problème sera que cette fonction ait accès à la variable correspondant au handle de ton axe.


    Citation Envoyé par ant12oine
    Enfin, je voudrais utiliser d'autres choses que plot comme imagesc ou contour, ca ne pose pas de problème?
    Enfin, çà rejoint la première réponse, tu peux utiliser n'importe quelle fonction de tracé pour afficher dans ton objet axe.

    Pour finir si je peux me permettre un petit conseil, prend le temps de lire la doc MATLAB pour toutes ces fonctions de tracé et sur l'objet axe (ainsi que ces propriétés), ca devrait t'aider

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

Discussions similaires

  1. Affichage des images dans une interface Java
    Par khaoula123 dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 02/05/2011, 23h41
  2. affichage d'un CV dans une interface graphique JAVA
    Par midoscofield dans le forum Documents
    Réponses: 2
    Dernier message: 11/05/2009, 15h05
  3. rafraichir graphique dans une interface swing
    Par mouss4rs dans le forum 2D
    Réponses: 4
    Dernier message: 06/06/2008, 14h51
  4. appel d'un binaire systeme dans une interface graphique
    Par elbronziero dans le forum Tkinter
    Réponses: 4
    Dernier message: 18/04/2007, 10h01

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