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 :

Unique légende pour 2 courbes


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 149
    Points : 59
    Points
    59
    Par défaut Unique légende pour 2 courbes
    Bonjours,

    j'ai réalisé un petit programme qui compare des points expérimentaux à des valeurs nominales, et ensuite j'aimerais les afficher en traçant les points, ainsi que 2 droite représentant une norme, les points entre ces 2 droites sont admissibles et ceux qui sont hors de ces droites sont inadmissibles. Bref le problème étant que pour tracer ces droite de la norme, je réalise 2 plot : un qui vaut +Norme et l'autre -Norme, et ensuite les points admissibles et les points inadmissibles. Ce que j'aimerais faire c'est donner une seule légende pour (+Norme et -Norme), puis une pour les points admissibles et une autre pour les points inadmissible. Je n'arrive pas à le faire, pour y palier j'ai défini la légende de la figure avant de faire le plot de -Norme, mais y a-t-il un moyen de faire autrement?
    Je vous mets le code que j'ai tapé :
    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
    % Comparaison avec le rayon initial
    Ecarts = Distances - R;
     
    % Affichage des écarts
    x = 1: 1: n;
    Norme = Ordre*2;
    Condition = and((Ecarts<=Norme), (Ecarts>=-Norme));
    figure
    plot(x(Condition), Ecarts(Condition), 'g*');
    hold on
    plot(x(~Condition), Ecarts(~Condition), 'r*');
     
    % Affichage de la norme
    plot (x, Norme, 'r');
    xlabel('Points expérimentaux');
    ylabel('Ecart');
    title({'Ecart des points expérimentaux' 'par rapport à l''axe central du cylindre'});
    legend('Points expérimentaux admissibles','Points expérimentaux inadmissibles','Norme');
    plot (x, -Norme, 'r');
    Merci d'avance ;-)

  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 160
    Points
    53 160
    Par défaut
    Une solution parmi d'autres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    figure
    p(1) = plot(x(Condition), Ecarts(Condition), 'g*');
    hold on
    p(2) = plot(x(~Condition), Ecarts(~Condition), 'r*');
    
    % Affichage de la norme
    p(3) = plot (x, Norme, 'r');
    plot (x, -Norme, 'r');
    
    xlabel('Points expérimentaux');
    ylabel('Ecart');
    title({'Ecart des points expérimentaux' 'par rapport à l''axe central du cylindre'});
    legend(p, {'Points expérimentaux admissibles','Points expérimentaux inadmissibles','Norme'});
    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 du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 149
    Points : 59
    Points
    59
    Par défaut
    J'ai modifié mon programme comme tu me l'as conseillé :
    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
    % Affichage des écarts
    x = 1: 1: n;
    Norme = Ordre*2;
    Condition = and((Ecarts<=Norme), (Ecarts>=-Norme));
    figure
    p(1) = plot(x(Condition), Ecarts(Condition), 'g*');
    hold on
    p(2) = plot(x(~Condition), Ecarts(~Condition), 'r*');
     
    % Affichage de la norme
    p(3) = plot (x, Norme, 'r');
    plot (x, -Norme, 'r');
    xlabel('Points expérimentaux');
    ylabel('Ecart');
    title({'Ecart des points expérimentaux' 'par rapport à l''axe central du cylindre'});
    legend(p,q {'Points expérimentaux admissibles','Points expérimentaux inadmissibles','Norme'});
    Mais lorsque j'exécute, j'ai un message d'erreur :
    In an assignment A(I) = B, the number of elements in B and I must be the same.

    Error in Test_cylindre_V2 (line 140)
    p(3) = plot (x, Norme, 'r');
    est-ce parce que le nombre d'élément n'est pas le même ?

  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 160
    Points
    53 160
    Par défaut
    Essaie comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    figure
    p(1) = plot(x(Condition), Ecarts(Condition), 'g*');
    hold on
    p(2) = plot(x(~Condition), Ecarts(~Condition), 'r*');
    
    % Affichage de la norme
    q = plot (x, Norme, 'r');
    plot (x, -Norme, 'r');
    xlabel('Points expérimentaux');
    ylabel('Ecart');
    title({'Ecart des points expérimentaux' 'par rapport à l''axe central du cylindre'});
    legend([p;q(1)], {'Points expérimentaux admissibles','Points expérimentaux inadmissibles','Norme'});
    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 du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 149
    Points : 59
    Points
    59
    Par défaut
    Je viens d'essayer mais j'ai le message d'erreur suivant :
    Error using vertcat
    Dimensions of matrices being concatenated are not consistent.

    Error in Test_cylindre_V2 (line 145)
    legend([p;q(1)], {'Points expérimentaux admissibles','Points expérimentaux
    inadmissibles','Norme'});

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 149
    Points : 59
    Points
    59
    Par défaut
    En fait en bataillant un peu j'ai trouvé la solution :
    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
    % Affichage des écarts
    x = 1: 1: n;
    Norme = Ordre*2;
    Condition = and((Ecarts<=Norme), (Ecarts>=-Norme));
    figure
    p1 = plot(x(Condition), Ecarts(Condition), 'g*');
    hold on
    p2 = plot(x(~Condition), Ecarts(~Condition), 'r*');
    
    % Affichage de la norme
    p3 = plot (1:0.1:n, Norme, '-r');
    plot (1:0.1:n, -Norme, '-r');
    xlabel('Points expérimentaux');
    ylabel('Ecart');
    title({'Ecart des points expérimentaux' 'par rapport à l''axe central du cylindre'});
    legend([p1; p2; p3], 'Points expérimentaux admissibles','Points expérimentaux inadmissibles','Norme');
    Merci ;-)

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

Discussions similaires

  1. Composant graphique pour dessiner courbes
    Par stephane.julien dans le forum C#
    Réponses: 11
    Dernier message: 02/11/2007, 17h26
  2. Réponses: 0
    Dernier message: 25/09/2007, 16h11
  3. Réponses: 3
    Dernier message: 02/05/2006, 22h36
  4. Réponses: 7
    Dernier message: 27/04/2006, 11h21

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