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 :

Plusieurs plots sur une figure


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut Plusieurs plots sur une figure
    Bonsoir,

    Voilà j'aimerais bien ploter - bien à part - plusieurs plot sur une figure (sans qu'ils se croisent donc) et sans utiliser subplot (ça prend trop de place). Je crois qu'il n'existe rien de prévu mais je pourrais par exemple décaler les courbes en ordonnées et refaire les axes? est ce possible?

    Une figure du genre:



    où chaque fenêtre serait un subplot avec plusieurs plots à l'interieur (tous les plots d'un subplot sont de même dimension)

    Merci d'avance et bonne soirée
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  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 304
    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 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Crée simplement 3 objets Axes dont tu spécifies toi-même les positions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    figure
     
    ax(1) = axes('position',...);
    ax(2) = axes('position',...);
    ax(3) = axes('position',...);
    Pour simplifier le positionnement, mets la propriété Units à Normalized (les valeurs de postion seront donc entre 0 et 1)
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Merci bien !!

    Je pense que Units Normalized est en défaut :

    Axes Property Descriptions

    This section lists property names along with the types of values each accepts. Curly braces { } enclose default values.

    [....]


    Units

    inches | centimeters | {normalized} | points | pixels | characters
    Cela marche pas mal mais puis je mettre à l'échelle ma courbe dans ce nouveau milieu?? Parce que lorsque je le lance tel quel ça me le fait pas et je ne vois qu'une partie de la courbe.

    Merci !
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  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 304
    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 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Citation Envoyé par Newenda Voir le message
    Cela marche pas mal mais puis je mettre à l'échelle ma courbe dans ce nouveau milieu??
    Je ne comprend pas ce que tu entends par "mettre à l'échelle" ?

    Vu que tu as crée un identifiant par objet Axes, tu peux en modifier n'importe quelle propriété...

    Une capture d'écran nous permettrait peut être de mieux comprendre.
    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
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonjour,

    Pour compléter la solution de Dut :

    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
     
    figure('units','pixels', ...
           'position',[100 100 700 400]) ;
     
    ax(1) = axes('units','pixels', ...
                 'position',[50 50 600 130]);
     
    ax(2) = axes('units','pixels', ...
                 'position',[50 220 280 150]);
     
    ax(3) = axes('units','pixels', ...
                 'position',[370 220 280 150]);
     
    axes(ax(1)) ; plot((1:10)) ;
    axes(ax(2)) ; plot(-(1:10)) ;
    axes(ax(3)) ; plot(-(1:10)) ;
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Merci pour vos réponses.

    Le problème étant que lorsque je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    axis off
     
    ax(1) = axes('position',[0  0.8  1  1]);
    axes(ax(1))
    plot(t_full,matrice(:,1))
    il me retourne une figure où l'on aperçoit que le bas de la courbe: elle n'est pas mis à l'échelle automatiquement (en ordonnée tout du moins)...



    Ici on ne voit que le bas de la courbe..

    Merci
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  7. #7
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    peut-être devrais-tu essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set(ax(1),'YLimMode','auto');
    normalement c'est par défaut mais bon

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Citation Envoyé par tubaas Voir le message
    peut-être devrais-tu essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set(ax(1),'YLimMode','auto');
    normalement c'est par défaut mais bon
    Arf ça ne change rien..

    Merci
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  9. #9
    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
    Je pense que ton problème vient de là:
    Citation Envoyé par Newenda Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ax(1) = axes('position',[0  0.8  1  1]);
    Essaye plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ax(1) = axes('position',[0  0.8  1  0.2]);
    Parce que là tu affiches un axe qui fait la hauteur de ta figure mais qui commence à 80% de la hauteur, il sort donc de cette figure (bon je sais pas si c'est clair dit comme ca )
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Ok merci ça marche très bien mais je pensais que dans le vecteur 'position' on devait mettre :

    [coin_inf_gauche_abscisse coin_inf_gauche_ordonnée coin_sup_droit_abscisse coin_sup_droit_ordonnée] ?
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  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
    Non en fait c'est comme ca:
    [coin_inf_gauche_abscisse coin_inf_gauche_ordonnée longueur hauteur]
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    ha oui effectivement... merci
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/11/2014, 16h28
  2. Réponses: 21
    Dernier message: 22/05/2008, 15h08
  3. Réponses: 7
    Dernier message: 23/11/2007, 06h35
  4. plusieurs div sur une ligne
    Par difficiledetrouver1pseudo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 18/02/2006, 23h57
  5. Mettre plusieurs enrégistrement sur une ligne
    Par royrremi dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/01/2006, 07h41

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