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 :

tracer les points dans des figures en arrière plan [Débutant]


Sujet :

Interfaces Graphiques

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 6
    Points
    6
    Par défaut tracer les points dans des figures en arrière plan
    Bonjour,

    J'ai 1 GUI principal avec plusieurs boutons, zones de texte et checkbox.
    2 des boutons de ce GUI ouvrent chacun 1 figure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    %Callback du Bouton 1
    Graphic1 =  figure(...)
    hold on
    ...
     
    %Callback du Bouton 2
    Graphic2 =  figure(...)
    hold on
    ...
    Dans chaque figure, je trace des points en continu toutes les 10 secondes grâce à un Timer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    figure(Graphic1)
    plot (Clock, Variable1);
    figure(Graphic2)
    plot (Clock, Variable2);
    Mon soucis est que toutes les 10 secondes, la fenêtre de la figure 1 puis la fenêtre de la figure 2 viennent en 1er plan sur mon écran et bloque ce que je faisais dans le GUI principal.
    Les commandes figure(Graphic1) et figure(Graphic2) sont la cause mais si je n'utilise pas ces commandes les points ne sont pas tracés dans la bonne figure.
    Si je clique avec la souris sur la figure 1, les points sont tracés dans la figure 1 et aucun dans la figure 2 et vice versa si je clique sur la figure 2.

    Comment puis je tracer les points dans les bonnes figures sans les mettre au 1er plan et sans bloquer ce que je faisais sur le GUI principal?

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    plot accepte comme premier argument l'handle de l'axe. Il te suffit donc d’utiliser cette syntaxe pour spécifier l'axe de la figure sur laquelle tu veux tracer des points et ça marche même si la figure est derrière une autre figure.
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci tug83.

    Comment puis-je connaitre l'handle de l'axe de la figure 1 et l'handle de l'axe de la figure 2?
    Aurais-tu un exemple, stp?

  4. #4
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    Plusieurs façons de le savoir:
    un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    f1 = figure;
    h_axes1 = get(f1,'CurrentAxes') ; % equivalent get(gca)
     
    f2= figure;
    h_axes2 = get(f1,'CurrentAxes') ;

    donc ensuite si tu veux etre surt de plotter dans l'axe de la figure1
    tu feras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(h_axes1,Xdata,Ydata)
    Voilà tout dépend comment tu codes , y a pleins de façons comme je disais de récuperer l'handle d'un axe d'une figure.
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci une nouvelle fois tug83.

    J'ai essayé comme tu m'as dit mais j'ai une erreur:
    Vectors must be the same lenghts.
    J'ai essayé d'une autre façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    f1 = figure;
    h_axes1 = axes('Parent',f1)
     
    f2= figure;
    h_axes2 = axes('Parent',f2)

    Les points sont bien tracés en arrière plan dans chaque figure

    Cependant j'ai d'autres problèmes car je n'ai pas que la commande plot dans la fonction Timer.

    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
    % Creation des figures avec appui sur bouton
    function f1button_Callback()
    f1 = figure;
    h_axes1 = axes('Parent',f1);
    grid on;
     
    function f2button_Callback()
    f2= figure;
    h_axes2 = axes('Parent',f2);
    grid on;
     
    % Timer pour tracer les points toutes les 5 secondes
    function Timer()  
     
    hold on; 
    plot (h_axes1, Clock, Variable1);
    legend (legende1(1));
    hold off;
     
    hold on; 
    plot (h_axes2, Clock, Variable2);
    legend (legende2(1));
    hold off;
    Mes 2 problèmes:
    1) A la création des figures la grille est affichée dans les 2 figures. Une fois entré dans la fonction Timer, la grille n'est affiché que dans la figure 2.
    2) La légende 2 n'est affichée que dans la figure 2. Si je sélectionne la figure 1 avec la souris, la légende 2 est affichée dans la figure 1.

    Comment puis je résoudre mes 2 problèmes, stp?

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Juillet 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Merci Winjerome pour les infos sur les balises

    J'ai résolu mes problèmes:

    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
    % Creation des figures avec appui sur bouton
    function f1button_Callback()
    f1 = figure;
    h_axes1 = axes('Parent',f1);
     
    function f2button_Callback()
    f2= figure;
    h_axes2 = axes('Parent',f2);
     
     
    % Timer pour tracer les points toutes les 5 secondes
    function Timer()  
     
    hold on; 
    plot (h_axes1, Clock, Variable1);
    legend (h_axes1,legende1(1));
    set(h_axes1,'XGrid','on','YGrid','on')
    hold off;
     
    hold on; 
    plot (h_axes2, Clock, Variable2);
    legend (h_axes2,legende2(1));
    set(h_axes2,'XGrid','on','YGrid','on')
    hold off;
    Merci pour votre aide

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

Discussions similaires

  1. Sauvegarder les coordonnées d'un point dans une figure 3D
    Par Jean Dumoncel dans le forum MATLAB
    Réponses: 2
    Dernier message: 18/11/2009, 13h28
  2. Réponses: 2
    Dernier message: 21/05/2006, 14h02
  3. Optimiser les jointures dans des requêtes
    Par klereth dans le forum PostgreSQL
    Réponses: 12
    Dernier message: 23/04/2005, 17h29
  4. [langage] probleme avec les listes dans des listes
    Par pqmoltonel dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2004, 12h32
  5. Trouver les redirections dans des traces
    Par severine dans le forum Développement
    Réponses: 3
    Dernier message: 21/04/2004, 18h51

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