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

MATLAB Discussion :

Comment rendre un graphique visible/invisible ?


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club Avatar de Flashget
    Profil pro
    Inscrit en
    Février 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Février 2007
    Messages : 60
    Points : 37
    Points
    37
    Par défaut Comment rendre un graphique visible/invisible ?
    Bonjour à tous,
    Voilà mon problème j'ai un GUI qui au lancement créer plusieurs axes avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ax1=axes('Units','Pixels','Position',[50,420,400,320]);
    mesh(x,y,P1);shading interp;
    ax2=axes('Units','Pixels','Position',[50,30,400,320]);
    surfl(x,y,depl);shading interp;
    ax3=axes('Units','Pixels','Position',[560,30,400,320]);
    surfl(x,y,profil);shading interp;
    Je voudrai pouvoir dans un callback les rendre invisible ou re visible.

    J’ai essayé ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(ax1,'Visible','on')
    Mais il me dit que ax1 n'existe ensuite j'ai testé ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ax = findobj(gcf,'Type','axes');
    set(ax,'Visible','on')
    Avec ce code il me cache le fond blanc ainsi que les axes mais me laisse visible les surfaces pourriez vous m'aider ?
    Petite précision si je pouvais rendre certain graphique invisible et d’autre nom ce serai bien.
    Merci d'avance
    Matlab 7.0.1.24704 (R14) Service Pack 1
    Ce n'est pas de la paranoïa, nous sommes tous observés!

  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 302
    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 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Comme souvent avec Matlab, il existe plusieurs solutions.

    En voici une :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    axes(...,...,'tag','ax1');
    mesh(...);
    axes(...,...,'tag','ax2');
    surfl(...);
    axes(...,...,'tag','ax3');
    surfl(...);
    Ensuite dans le callback :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ax=findobj('type','axes','tag','ax1'); % Pour l'axe n°1
    set(ax,'visible','off')
    Par contre, je n'ai pas compris si c'est bien les axes ou les objets contenus dans les axes que tu veux rendre invisible ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau membre du Club Avatar de Flashget
    Profil pro
    Inscrit en
    Février 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Février 2007
    Messages : 60
    Points : 37
    Points
    37
    Par défaut
    Merci pour ta réponse,
    Je viens de tester ton code et ça ne marche pas

    Quand je regarde ce qu'il y a dans ax il me donne ça

    ax =

    Empty matrix: 0-by-1
    Sinon je veut rendre invisible la totalité du graphique l'axes et le mesh
    Matlab 7.0.1.24704 (R14) Service Pack 1
    Ce n'est pas de la paranoïa, nous sommes tous observés!

  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 302
    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 302
    Points : 52 882
    Points
    52 882
    Par défaut
    J'ai fait une boulette... il faut inverser l'ordre d'appel des fonctions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mesh(...);
    set(gca,...,...,'tag','ax1');
    surfl(...);
    set(gca,...,...,'tag','ax2');
    surfl(...);
    set(gca,...,...,'tag','ax3');
    Ce qui donne dans le callback:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ax=findobj('type','axes','tag','ax1'); 
    set(ax,'visible','off');% Pour l'axes
    set(findobj('parent',ax,'type','surface'),'visible','off') % Pour le mesh/surf
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Une autre solution consiste à déplacer l'objet axes "hors" de la figure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    figure;
    axes('units','normalized');
    set(gca,'userdata',get(gca,'position')); % Enregistre la position courante
    pause(1)
    set(gca,'units','normalized','position',[1.05 1.05 1 1]); % Déplace l'axes
    pause(1)
    set(gca,'position',get(gca,'userdata')) % Restaure l'axes
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Nouveau membre du Club Avatar de Flashget
    Profil pro
    Inscrit en
    Février 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Février 2007
    Messages : 60
    Points : 37
    Points
    37
    Par défaut
    Merci je pense que je vais adopter la solution du déplacement qui est très astucieuse merci beaucoup
    Matlab 7.0.1.24704 (R14) Service Pack 1
    Ce n'est pas de la paranoïa, nous sommes tous observés!

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

Discussions similaires

  1. Comment rendre un contrôle cadre invisible
    Par moilou2 dans le forum IHM
    Réponses: 3
    Dernier message: 13/06/2008, 16h17
  2. [HTML] Comment rendre un champ input invisible
    Par Demonyak dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/05/2008, 12h13
  3. Réponses: 3
    Dernier message: 21/04/2008, 13h47
  4. [Joomla!] comment rendre un menu visible mais non cliquable dans joomla
    Par tcone dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 08/02/2007, 23h25
  5. Réponses: 7
    Dernier message: 06/01/2006, 10h47

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