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 :

Ploter en couleur, nuage de points


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 Ploter en couleur, nuage de points
    Imaginons un nuage de 10 points en 2D

    x=[2 5 4 6 2 7 6 5 5 7]
    y = [5 3 6 8 4 2 6 9 1 4]


    Mais avec une matrice définissant 3 groupes G (G1,G2,G3)

    g = [G1 G1 G2 G1 G3 G2 G3 G3 G1 G1]


    signifiant que le point 1: (2;5) est du groupe 1, que le point 2: (5;3) est aussi du groupe 1, que le point 3: (4;6) est du groupe 2 etc...

    Ma question est simple : comment, en plus de ploter ces points, on peut leur définir une couleur suivant leurs groupes : G1 en rouge, G2 en bleu, G3 en vert par exemple?

    Merci

  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 318
    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 318
    Points : 52 957
    Points
    52 957
    Par défaut
    Il faut utiliser la fonction SCATTER ici

    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    x=[2 5 4 6 2 7 6 5 5 7];
    y = [5 3 6 8 4 2 6 9 1 4];
     
    g = [1 1 2 1 3 2 3 3 1 1];
     
    figure
     
    map = [1 0 0 ; 0 0 1 ; 0 1 0];
    colormap(map)
     
    scatter(x,y,[],g)
    ou selon la nature de g :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    x=[2 5 4 6 2 7 6 5 5 7];
    y = [5 3 6 8 4 2 6 9 1 4];
     
    g = {'G1' 'G1' 'G2' 'G1' 'G3' 'G2' 'G3' 'G3' 'G1' 'G1'};
    [pasbesoin,a,b] = unique(g);
     
    figure
     
    map = [1 0 0 ; 0 0 1 ; 0 1 0];
    colormap(map)
     
    scatter(x,y,[],b)

  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, parfait

  4. #4
    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
    En faite ça se complique un peu, j'ai beaucoup de "groupes" (12) et j'aimerais donc rajouter des formes au couleur (si je m'amuse avec le RGB, ça va devenir illisible). J'aimerais aussi pouvoir mieux définir la forme du plot au type de groupe (bien voir à quelle couleur correspond le groupe directement dans le programme, car dans la commande ci dessus, G1 est en [1 0 0] car G1 est le 1er appelé et [1 0 0] aussi mais il n'y a pas de lien direct et ceci est embêtant quand on a beaucoup de groupes car il est alors nécessaire de bien voir l'ordre d'apparition des groupes et tout devient faux si on en oublie un). Je ne sais pas si cela est possible avec scatter, si oui je suis preneur !

    Mais peut être est il possible de faire comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    hold on
    x_1er_groupe = x(g=='g1')
    y_1er_groupe = y(g=='g1')
    plot(x_1er_groupe,y_1er_group,'r.')
     
    x_2eme_groupe = x(g=='g2')
    y_2eme_groupe = y(g=='g2')
    plot(x_2eme_groupe,y_2eme_group,'bx')
     
    x_3eme_groupe = x(g=='g3')
    y_3eme_groupe = y(g=='g3')
    plot(x_3eme_groupe,y_3eme_group,'gs')
    Mais quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x_1er_groupe = x(g=='G1')
    ou 
    x_1er_groupe = x{g=='G1'}
    il me retourne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ??? Function 'eq' is not defined for values of class 'cell'.
     
    Error in ==> eq at 18
      [varargout{1:nargout}] = builtin('eq', varargin{:});
    comment fait ton pour les cells alors?

    Merci

  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 318
    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 318
    Points : 52 957
    Points
    52 957
    Par défaut
    Essaie d'abord ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    map = hsv(12);
    colormap(map)
    ou en mélangeant les couleurs dans la palette :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    map = hsv(12);
    idx = randperm(12);
    map = map(idx,:);
    colormap(map)

  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 c'est bien pratique !
    Mais comment faire pour savoir quel groupe a quelle couleur ? Je suis un peu chieur mais j'aimerais bien pouvoir le savoir sans a vérifier avec mon .txt.

    (car oui, x, y et g étaient des exemples : ) ), mon .txt est un peu plus long et ça va être dur de voir l'ordre d'apparition des groupes dedans.

    Merci

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 318
    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 318
    Points : 52 957
    Points
    52 957
    Par défaut
    Je suis sûr que tu as déjà entendu parlé de la fonction LEGEND, non ?

  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
    Oui mais LEGEND comment? Car à part faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    legend('G1','G2','G3'...)
    je ne vois pas...et pour ça il faut connaitre l'ordre d'apparition des groupes non?

    De plus j'aimerais vraiment choisir les couleurs et les formes moi même car certains groupes sont plus ou moins similaires entre eux et j'aimerais garder un ton de couleur ou forme identique pour eux..

    J'ai vu que les noms de mes groupes sont dans la variable "pasbesoin" que tu as défini, y'a surement un moyen de creer une légende automatique à partir de ça non?
    je rappelle que mon cas réel, g n'est pas aussi simple : il est plutot de la forme :
    g = [G1 G1 ...x25..G2,G1,G1,G1,G3 ...]
    et dans ce cas, il est facile de ne pas voir un G2 perdu dans une masse de G1 et croire que G3 est le 2ème groupe a apparaitre et non G2

    Merci

    Le seul moyen que je trouvé pour garder le controle sur mes plots c'est donc :
    (ex pour le le groupe 1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     figure
     hold on
     x_g1 = x(b==1)
     y_g1 = y(b==1)
     plot(x_g1 ,y_g1,'r.')
     
    ETC...

  9. #9
    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
    Pour faire plus simple..

    Citation Envoyé par Dut Voir le message
    Je suis sûr que tu as déjà entendu parlé de la fonction LEGEND, non ?
    Quel argument mets tu dans LEGEND ?... j'ai tout essayé...

    merci

  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

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

Discussions similaires

  1. Couleur nuages de points
    Par fifili64 dans le forum QlikView
    Réponses: 7
    Dernier message: 04/10/2012, 14h37
  2. [XL-2007] Changement de couleur nuage de points et légende
    Par bapt298 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/08/2012, 12h21
  3. nuages de points et couleurs variables selon la tranche
    Par davidpery dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/10/2007, 19h23
  4. Help : changer la couleur d'une point dans un Nuages de point
    Par yukka dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/05/2007, 12h30
  5. interpolation couleur entre nuage de points
    Par soubre dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/07/2005, 16h52

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