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 :

Légende sur plot


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut Légende sur plot
    Bonjour à tous !

    Alors voici mon soucis : j'ai une image, avec différents patch de couleurs et un colorbar (qui correspond à un champ de déplacement que j'ai tracé sur l'image.)
    En fait, j'aimerai ajouter une légende sur les bords à la place de mon colorbar. C'est à dire une indication du type : pour les couleurs vertes on a un déplacement entre 15-20m par exemple et ce pour chaques couleurs.

    J'ai essayé de faire le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    p = plot(nan,nan,'Color',[1.0 0.0 0.0],'LineStyle','-','LineWidth',2);
    legend(p,{'1'});
    mais ça ne marche pas.
    Une idée ? je vous joins ici, une photo de ce que j'aimerai avoir.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    salut

    qu'est ce qui ne marche pas ?
    chez moi tes deux lignes fonctionnent

    Fabien

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    a la fin j'ai mon plot avec mon image et mon colorbar, mais aucune légende ne s'affiche.
    Par ailleurs, comment procéder pour faire des ronds ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    voici le code

    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
     
     
    h=image(im);
    set(h,'alphadata',mask<=1)
    s=size(mask);
     
    hold on
     
    c=colorbar
    caxis([0 180])
    axes(c);
    ylabel('Displacement (m)')
    %p(1) = plot(nan,nan,'[0 5]');
    p = plot(nan,nan,'Color',[1.0 0.0 0.0],'LineStyle','-','LineWidth',2);
    legend(p,{'1'});

  5. #5
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    en remplacant '-' par 'o'
    (et d'ailleurs 'linestyle' par 'marker')

    essayes de mettre la legend en dehors du graph ('location','bestoutside'), elle est peut etre en arrière plan

    Fabien

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    OK ça marche, mais il y a un soucis, j'aimerais avoir un rond remplis, du coup je spécifis 'filled' à la fin de plot, mais ça ne marche pas. J'ai un not enough input argument

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    p = plot(nan,'Color',[1.0 0.0 0.0],'marker','o','filled');
    legend(p,{'1'},'location','bestoutside'),

  7. #7
    Invité
    Invité(e)
    Par défaut
    Il n'y a pas de propriété 'filled', c'est 'MarkerFaceColor' avec la couleur de remplissage souhaitée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    p = plot(nan,'Color',[1.0 0.0 0.0],'marker','o', 'MarkerFaceColor', taCouleur);
    legend(p,{'1'},'location','bestoutside'),

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    par contre il me dessine une droite qui coupe un rond, comment pour avoir seulement un rond ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    En ajoutant 'LineStyle', 'none' ou directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p = plot(nan,'o','Color',[1.0 0.0 0.0], 'MarkerFaceColor', taCouleur);

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    cool merci beaucoup

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    si je veux ajouter une 'boule' juste à coté, je copie deux fois la mm commande dans le plot ? Pour faire comme l'image que j'ai jointe?

    Je sais qu'il y a une option pour faire, ça , mais impossible de m'en souvenir et de trouver ça.

    Merci encore

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    En fait, je viens de me repencher sur le probleme, mais cest un peu plus compliqué que cela. Ce que j'aimerai faire, c'est pouvoir attribué une couleur que l'on peut lire sur le colorbar à ces petits ronds.

    En gros, mon problème se situe dans la formulation de la condition suivante: pour un déplacement entre 150 et 120 par exemple, la couleurs du rond correspond à telle couleur sur le colorbar.

    Comment récupérer et attribuer les couleurs du colorbar ?

    En fait, ce que je cherche , c'est vraiment de fractionner mon colorbar en plusieurs petit rond et d'attribuer des légendes à ceux ci.

    Merci d'avance

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    (entre parenthèse, j'ai un autre soucis , je n'arrive pas à mettre plusieurs légendes, cela ne marche quand je fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    p = plot(nan,'o','Color',[1.0 0.0 0.0], 'MarkerFaceColor', 'r');
    p2 = plot(nan,'o','Color',[1.0 0.0 0.0], 'MarkerFaceColor', 'b');
    legend(p,{'150-180'},'location','bestoutside')
    hold on
    legend(p2,{'120-150'},'location','bestoutside')
    ou quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    p = plot(nan,'o','Color',[1.0 0.0 0.0], 'MarkerFaceColor', 'r');
    p2 = plot(nan,'o','Color',[1.0 0.0 0.0], 'MarkerFaceColor', 'b');
    legend(p,{'150-180'},p2,{120-150}'location','bestoutside')
    ou encore:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    p = plot(nan,'o','Color',[1.0 0.0 0.0], 'MarkerFaceColor', 'r');
    p2 = plot(nan,'o','Color',[1.0 0.0 0.0], 'MarkerFaceColor', 'b');
    legend(p,{'150-180'},'location','bestoutside')
    legend(p2,{'120-150'},'location','bestoutside')

  14. #14
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    salut

    réponse par une question :
    pourquoi tu n'affiches tout simplement pas une colorbar avec des libellés personnalisés ??

    sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    legend([p p2],{'150-180','120-150'},'location','bestoutside')
    Fabien

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    Oui cela peut-être interessant !

    Cependant, mes maitres de stages m'ont demandés de faire une légende type comme la photo que j'ai jointe au début. C'est pour cela, que j'aurais aimais savoir comment faire.

  16. #16
    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
    Citation Envoyé par romainmill Voir le message
    En gros, mon problème se situe dans la formulation de la condition suivante: pour un déplacement entre 150 et 120 par exemple, la couleurs du rond correspond à telle couleur sur le colorbar.

    Comment récupérer et attribuer les couleurs du colorbar ?
    La réponse se trouve en partie dans le chapitre IV de ce tutoriel :
    Gestion des couleurs par MATLAB
    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)

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    ok je vais regarder ça, je vous donne des nouvelles...merci

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    j'ai un soucis , voilàs, quand j'essaie d'ajouter une 4eme légende j'ai le soucis suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    p= plot(nan,'o','Color',[1 0 0], 'MarkerFaceColor', 'r');
    p2 = plot(nan,'o','Color',[0 1 1], 'MarkerFaceColor', 'c');
    p3 = plot(nan,'o','Color',[1 1 0], 'MarkerFaceColor', 'y');
    p4 = plot(nan,'o','Color',[0 0 1], 'MarkerFaceColor', 'b');
    legend([p p3 p2 p4],{'150-180','80-120','40-80','0-40'},'location','bestoutside')
    et voici le message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Out of memory. Type HELP MEMORY for your options.
     
    Error in ind2rgb (line 29)
    b = zeros(size(a)); b(:) = cm(a,3);
     
    Error in imcorr (line 8)
    im = ind2rgb(im,gray(256));
    au début, j'écris ça pour avoir les vraies couleurs de mon image qui est une image TIFF en noir et blanc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    im=imread(strcat(num2str(lat1),'_',num2str(lat2),'_1.TIF'));
    im = ind2rgb(im,gray(256));

  19. #19
    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
    L'erreur n'a rien à voir avec l'ajout d'une légende supplémentaire.

    Peux-tu nous montrer ce que renvoie ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    im = imread(strcat(num2str(lat1),'_',num2str(lat2),'_1.TIF'));
     
    whos im
    Utilises-tu une version 32 ou 64 bits de MATLAB ?
    => Comment savoir si ma machine est une architecture 32 bits ou 64 bits ?
    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)

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    J'utilise une version 32bit de matlab 2012. Voilàs ce que me renvoi la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Name         Size                    Bytes  Class     Attributes
     
      im        5508x5014x3            662810688  double

Discussions similaires

  1. Plot légende sur le graphique
    Par cedji dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/05/2012, 13h38
  2. Réponses: 2
    Dernier message: 02/03/2012, 09h11
  3. modifier texte des légendes sur graphique
    Par petitours dans le forum IHM
    Réponses: 1
    Dernier message: 11/12/2007, 21h46
  4. Légende sur un diagramme de Black-Nichols
    Par sidle366 dans le forum MATLAB
    Réponses: 5
    Dernier message: 25/09/2007, 10h27
  5. Légende sur un graphique
    Par pwfsic dans le forum MATLAB
    Réponses: 4
    Dernier message: 08/06/2007, 14h49

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