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 :

couleur dans la commande SPY


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut couleur dans la commande SPY
    Bonjour,

    ma demande va peut être paraitre simplette, mais je n'arrive pas à trouver de réponse sur le net, malgré tout de même pas mal de recherche.

    Je fais un spy d'une matrice, jusque là rien de bien monstrueux, mais je suis incapable de mettre une couleur autre que les 8 prévues avec les lettres (b, k, ...). Je souhaiterais pouvoir faire un spy(M,macouleurenrgb), mais à chaque fois erreur, quelqu'un pourrait-il me dépanner ?

    Merci d'avance.

    Neibaf

  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 : 53 166
    Points
    53 166
    Par défaut
    La fonction SPY créé des objets de type Line :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    B = bucky;
    spy(B)
     
    h = findobj('type','line');
    set(h,'color',rand(1,3))
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Merci de la réponse rapide.

    Rien de plus direct ? Je suis obligé de commencer par effectuer le tracer pour ensuite faire une modification ? Je ne peux pas faire un code directement du style spy(B,ce qu'il faut [1 .3 .8]) par exemple ?

    Merci d'avance :-)

    ps : c'est parce que mes élèves ne vont pas aimer...

  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 : 53 166
    Points
    53 166
    Par défaut
    Tu peux englober SPY dans une autre fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function myspy(S,col)
     
    error(nargchk(1,2,nargin));
     
    if nargin == 1
        col = [0 0 1];
    end
     
    spy(S);
     
    h = findobj('type','line');
    set(h,'color', col)
    A part ça, je ne vois pas de solution.
    Du moins aucune qui ne toucherait aux fonctions propres à MATLAB (dont SPY fait partie)
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    ok, merci beaucoup. Je vais rester sur la première solution.

    Bonne continuation !

    Fabien

    ps : et j'ai oublié, idiot que je suis... meilleurs vœux !

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    arg, non en fait, ça ne va pas du tout. Il faut que je précise.

    J'ai une matrice qui contient divers nombre, jusque là rien de bien particulier.
    Je dois faire une boucle pour afficher chaque nombre d'une couleur particulière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    couleurs=['choix0', 'choix1', 'choix2', 'choix3', 'choix4'];
    for k=0:4
    spy((M==k),couleurs(k+1));
    hold on
    end
    axis off
    drawnow
    Et le problème, c'est que si je rajoute le code que tu m'as donné en adaptant, ça ne colle pas, car à la fin ça remplace toutes les 'line'...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    couleurs=['choix0', 'choix1', 'choix2', 'choix3', 'choix4'];
    for k=0:3
    spy((M==k));
    h=findobj('type','line');
    set(h,'color',couleurs(k+1));
    hold on
    end
    spy((M>=4));
    h=findobj('type','line');
    set(h,'color',couleurs(5));
    hold on
    axis off
    drawnow
    Merci d'avance...

  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 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 : 53 166
    Points
    53 166
    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)

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    ha ben non, il me semble que ça ne va pas scatter pour faire ça. Ca ne permet pas de faire directement la représentation de la matrice, si j'ai bien compris, mais ça prend une liste d'abscisses, une liste d'ordonnées et ça représente les points.

    Est-il possible de faire un truc de ce style :
    macouleur=définition d'une couleur en rgb

    ensuite de faire

    spy(M,'macouleur') (après tout, ça marche bien quand on fait spy(M,'r')).

    Merci :-)

  9. #9
    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 : 53 166
    Points
    53 166
    Par défaut
    Avec SCATTER :

    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
    M = round(rand(10,20)*5);
     
    [r,c] = meshgrid(1:size(M,2),1:size(M,1));
     
    figure
     
    uM = unique(M(:));
    nuM = numel(uM);
     
    col = hsv(nuM);
    colormap(col);
     
    scatter(r(:),c(:),24,M(:),'marker','*')
    axis equal ij
     
    box on
     
    xlim([0 size(M,2)+1])
    ylim([0 size(M,1)+1])
    Avec SPY :

    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
    M = round(rand(10,20)*5);
     
    uM = unique(M(:));
    nuM = numel(uM);
     
    figure
    hold on
     
    col = hsv(nuM);
     
    for n = 1:nuM
     
        spy(M==uM(n));
        h = findobj('type','line');
        set(h,'color',col(n,:),'handlevisibility','off');
     
    end
    Avec IMAGESC :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    M = round(rand(10,20)*5);
     
    figure
     
    imagesc(M);
    axis image
     
    box on
    Les palettes de couleurs sont générées automatiquement mais tu peux très bien modifier les codes pour faire des entrées manuelles
    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)

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Points : 9
    Points
    9
    Par défaut merci
    Ha ouais, ça c'est top, merci beaucoup, je vais utiliser ceci (avec la commande spy).

    Merci et bonne continuation.

    ps : on ne pas signaler que le problème est résolu ?

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

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. Sauvegarder une couleur dans un champ Alphanum
    Par Harry dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/07/2004, 11h21
  3. [C#] Comment mettre une ligne en couleur dans mon DataGrid ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/07/2004, 10h03
  4. Modifier la taille, la couleur ... dans un label
    Par Guigui_ dans le forum GTK+ avec Python
    Réponses: 3
    Dernier message: 15/07/2004, 17h09
  5. Ecrire du texte en couleurs dans un composant
    Par wutang dans le forum Composants
    Réponses: 11
    Dernier message: 12/07/2004, 10h55

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