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 :

griser entre 2 courbes


Sujet :

MATLAB

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Points : 107
    Points
    107
    Par défaut griser entre 2 courbes
    Salut,
    j'ai un tableau tab de dimensions 60*3. Les éléments de la 3ème colonne étant supérieurs à ceux de la 2ème colonne. Je trace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    plot(tab(:,1),tab(:,2),'r',tab(:,1),tab(:,3),'b')
    J'ai donc 2 courbes et j'aimerais colorer l'entre 2 courbes (peu importe la couleur).
    Je ne sais pas comment le faire.
    Pouvez-vous m'aider s'il vous plait.

  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
    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 régulier
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Points : 107
    Points
    107
    Par défaut
    Merci dut pour le lien vers l'autre discussion, je ne l'avias pas trouvé.
    Alors, ça ne marche pas tout à fait dans mon cas car dans mes 2 vecteurs tab(:,2) et tab(:,3) j'ai plusieurs NaN. Ce qui fait que quand je suis ta procédure (avec patch(fv), hold on et le plot), j'ai les 2 courbes issues de plot mais je n'ai pas la coloration entre les 2 courbes.
    Alors, je trie, je vire les NaN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    L=isfinite(tab(:,2));
    tab(:,2)=tab(L,2);
    et pareil pour les 2 autres vecteurs: je n'ai plus de NaN.
    je refais ta procédure et là , ça marche, sauf que, là où je ne voudrais rien (là où il y avait les NaN, j'ai du gris. Pour que vous pigiez mieux, je joins la figure. J'aimerai qu'entre x=1460 et x=1490, il n'y ait rien. Soit un graphe en plusieurs partie.
    Images attachées Images attachées  

  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
    Essaie ceci :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    % Données aléatoires
    yA = rand(1,50);
    yB = rand(1,50)+2;
     
    % Ajout de NaN
    idx = [8 15 30 45];
    yA(idx) = nan;
    yB(idx) = nan;
     
     
    % Séparation en groupes
    idx = [0 find(isnan(yA)) length(yA)+1];
     
    for n=1:numel(idx)-1
     
        idx2 = idx(n)+1:idx(n+1)-1;
        yAt = yA(idx(n)+1:idx(n+1)-1);
        yBt = yB(idx(n)+1:idx(n+1)-1);
     
        vertices{n} = [idx2(:) yAt(:) ; idx2(end:-1:1).' yBt(end:-1:1).'];
     
    end
     
     
    % Affichage
    figure
    hold on
    for n = 1:numel(vertices)
        patch('vertices',vertices{n},'faces',1:size(vertices{n},1),'facecolor',[.8 .8 .8])   
    end
    Ou en mettant une couleur par groupe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    % Affichage
    figure
    col = gray(numel(vertices)+1);
    hold on
    for n = 1:numel(vertices)
        patch('vertices',vertices{n},'faces',1:size(vertices{n},1),'facecolor',col(n,:))   
    end
    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 régulier
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Points : 107
    Points
    107
    Par défaut
    merci

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

Discussions similaires

  1. [Débutant] Calcul d'erreur entre deux courbes
    Par louftansa dans le forum MATLAB
    Réponses: 14
    Dernier message: 03/06/2009, 15h10
  2. Réponses: 2
    Dernier message: 01/08/2008, 10h47
  3. Différence entre deux courbes
    Par malokox dans le forum Signal
    Réponses: 2
    Dernier message: 24/06/2008, 10h15
  4. [plot] griser une zone entre 2 courbes
    Par bioman666 dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/04/2007, 18h02
  5. [VBA E]Colorier l'espace entre deux courbes
    Par conconbrr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/07/2006, 09h19

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