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 courbes sur un axes précis


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 13
    Par défaut Tracer courbes sur un axes précis
    Bonjour,

    je suis en train de faire un GUI "à la main" et j'ai un soucis pour l'affichage de mes courbes sur un axes précis.
    J'ai 2 axes dans ma figure GUI.
    J'ai des uicontrol permettant de choisir les paramètres des équations.
    J'affiche au début les paramètres et les axes vides.
    Une fois les uicontrol choisi, je calcule les nouvelles équations et ensuite je voudrais l'équation 1 s'affiche dans l'axes1 et l'équation 2 dans l'axes2.

    Le problème est que je n'arrive pas à afficher les courbes dans les axes.

    Dans le fichier .m, j'ai mis cela :
    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
     
    %%%%%%%%%%%%%%%%%%%%%
    %DEBUT DE LA FONCTION PRINCIPALE%
    %%%%%%%%%%%%%%%%%%%%%
    function courbes
    clc;
     
    % Création de l'objet Figure
    h = figure('units','pixels',...
        'position',[5 40 500 400],... 
        'numbertitle','off',...
        'name','Courbes',...
        'menubar','figure',... 
        'tag','interface');
     
    global x1 x2 y1 y2
    ... %uicontrol de séléction des paramètres
     
        data=guihandles(gcf);
        guidata(gcf,data);
     
        ha1 = axes('Units','Pixels','Position',[100,35,300,150],'tag','axes1'); 
        ha2 = axes('Units','Pixels','Position',[600,35,300,150],'tag','axes2'); 
        draw_callback %permet de lancer l'affichage des courbes dans les axes
    %%%%%%%%%%%%%%%%%%%
    %FIN DE LA FONCTION PRINCIPALE%
    %%%%%%%%%%%%%%%%%%%
     
    ... %sous-fonction de calcul des équations
     
    %%%%%%%%%%%%%%%%%%%%%
    %DEBUT DE LA SOUS-FONCTION DRAW%
    %%%%%%%%%%%%%%%%%%%%%
          function draw_Callback
             global x1 y1 x2 y2
             get(gcf,'axes1');
             plot(x1,y1); 
             grid on;
             get(gcf,'axes2');
             plot(x2,y2)
             grid on;
         end
    %%%%%%%%%%%%%%%%%%%
    %FIN DE LA SOUS-FONCTION DRAW%
    %%%%%%%%%%%%%%%%%%%
    Que dois je faire pour que les courbes s'affiches dans les axes qui vont bien ?

    merci de votre aide !

    ps: je débute dans le GUI...

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Comme ceci :

    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
    %%%%%%%%%%%%%%%%%%%%%
    %DEBUT DE LA FONCTION PRINCIPALE%
    %%%%%%%%%%%%%%%%%%%%%
    function courbes
    clc;
    
    % Création de l'objet Figure
    h = figure('units','pixels',...
        'position',[5 40 500 400],... 
        'numbertitle','off',...
        'name','Courbes',...
        'menubar','figure',... 
        'tag','interface');
    
    global x1 x2 y1 y2
    ... %uicontrol de séléction des paramètres
       
    
        ha1 = axes('Units','Pixels','Position',[100,35,300,150],'tag','axes1'); 
        ha2 = axes('Units','Pixels','Position',[600,35,300,150],'tag','axes2'); 
    
        data=guihandles(gcf);
        guidata(gcf,data);
    
        draw_Callback %permet de lancer l'affichage des courbes dans les axes
    %%%%%%%%%%%%%%%%%%%
    %FIN DE LA FONCTION PRINCIPALE%
    %%%%%%%%%%%%%%%%%%%
    
    ... %sous-fonction de calcul des équations
    
    %%%%%%%%%%%%%%%%%%%%%
    %DEBUT DE LA SOUS-FONCTION DRAW%
    %%%%%%%%%%%%%%%%%%%%%
          function draw_Callback
    
             handles=guidata(gcf);
             global x1 y1 x2 y2
             plot(handles.axes1,x1,y1); 
             grid on;
             plot(handles.axes2,x2,y2)
             grid on;
         end
    %%%%%%%%%%%%%%%%%%%
    %FIN DE LA SOUS-FONCTION DRAW%
    %%%%%%%%%%%%%%%%%%%
    end
    Note : le code me semble incomplet et certains passages, comme le positionnement des objet Axes mes semble bizarre.

    De plus draw_Callback est déclarée comme une fonction imbriquée mais utilisée comme une sous-fonction. Il faut ajouter un "end" à la fin du code pour fermer la fonction principale

  3. #3
    Membre averti
    Inscrit en
    Avril 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 13
    Par défaut
    cool, ca marche à présent !!

    merci !

    par contre l'axes1 n'affiche pas les grilles alors que j'ai bien mis grid on.
    et l'axes2 affiche les grille... bizarre...
    il faut que je creuse cela !

    Sinon, pour le end de la fonction principale, je l'ai mise avant le texte :
    %%%%%%%%%%%%%%%%%%%
    %FIN DE LA FONCTION PRINCIPALE%
    %%%%%%%%%%%%%%%%%%%

    j'avais oublié de le copier ici.

    Pour les fonctions, il vaut mieux utiliser des sous fonctions ou des fonctions imbriquées ? (je ne vois pas trop la différence) : je suppose que les sous fonctions sont placées après le end de la fonction principale et les fonctions imbriquées dans la fonction principale (avant le end), c'est bien cela ?
    Mais qu'elle est la différence ?

    Merci pour ton aide !!!

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par telecofr Voir le message
    je suppose que les sous fonctions sont placées après le end de la fonction principale et les fonctions imbriquées dans la fonction principale (avant le end), c'est bien cela ?
    Oui

    Citation Envoyé par telecofr Voir le message
    Mais qu'elle est la différence ?
    La différence se fait surtout au niveau de la visibilité des variables. Les fonctions imbriquées peuvent partager les mêmes variables (un peu comme des variables globales).

    Citation Envoyé par telecofr Voir le message

    par contre l'axes1 n'affiche pas les grilles alors que j'ai bien mis grid on.
    et l'axes2 affiche les grille... bizarre...
    Non c'est normal. La fonction GRID s'applique sur l'objet Axes courant. Dans le code, lorsque la fonction draw_Callback est appelée, c'est le dernier objet Axes qui est courant, donc axes2. Donc GRID se focalise sur cette objet.

    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
          function draw_Callback
     
             handles=guidata(gcf);
             global x1 y1 x2 y2
             axes(handles.axes1)
             plot(x1,y1); 
             grid on
             axes(handles.axes2)
             plot(x2,y2)
             grid on;
     
          end
    Sinon il y a un problème avec la déclaration des variables globales et l'utilisation des fonctions imbriquées

  5. #5
    Membre averti
    Inscrit en
    Avril 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 13
    Par défaut
    ok, cela marche à présent pour le grid on !!!


    sinon pour les variables globales, vu que je suis en sous fonction, cela va, non ? (j'ai mis le end de la fonction principale avant la premier sous fonction...)

    Merci !

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    L'emploi des variables globales est toujours déconseillé... il vaut mieux utiliser les arguments d'entrée et de sortie des fonctions.

Discussions similaires

  1. décaler une courbe sur l'axe des abscisse
    Par med307 dans le forum MATLAB
    Réponses: 1
    Dernier message: 31/05/2012, 11h51
  2. Réponses: 13
    Dernier message: 19/09/2009, 01h04
  3. tracer courbe dans objet axes
    Par chris069 dans le forum Interfaces Graphiques
    Réponses: 9
    Dernier message: 11/06/2008, 20h16
  4. comment tracer une courbe sur linux en fortran 90
    Par supraconductivité dans le forum Linux
    Réponses: 2
    Dernier message: 05/02/2008, 12h01
  5. [JFreeChart] Multi-courbes sur axe XY
    Par ohyes dans le forum 2D
    Réponses: 2
    Dernier message: 13/01/2008, 15h44

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