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 :

Imposer l'aspect d'une légende [Débutant]


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 32
    Points : 23
    Points
    23
    Par défaut Imposer l'aspect d'une légende
    Bonjour à tous,

    J'ai un soucis lié à la légende dans les figures Matlab, je n'ai pour le moment trouvé aucune solution.

    J'affiche dans une figure plusieurs courbes, chacune avec de nombreux points. Pour pouvoir les distinguer, j'aimerais utiliser des marqueurs. Le problème, c'est qu'avec un marqueur sur chaque point, la courbe a juste l'air très épaisse. Je n'ai pas trouvé en ligne comment définir un écart entre les différents marqueurs (il semble que ça ne soit pas implémenté). Du coup, j'ajoute pour chaque courbe, une autre courbe basée sur les mêmes données, mais avec seulement un point sur dix, et affiché uniquement en marqueur. J'aurai donc une courbe avec un marqueur tous les 10 points.

    Jusque là, tout va bien. Maintenant, je veux ajouter une légende, et là, soit j'ai ma courbe initiale (disons un trait bleu), soit mes marqueurs (disons des ronds bleus), mais pas un trait avec un rond. Normal : la légende prend en compte une courbe, pas deux en même temps. Du coup, voici ma question : est il possible de forcer l'aspect de la courbe dans la légende, indépendemment de ce qui est affiché ?

    Je vous remercie.

  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
    Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    x = linspace(1,100,100);
    y = x.^2;
     
    figure
    p = plot(x, y, 'b-', x(1:10:end), y(1:10:end), 'bo');
    legend(p(2), 'test')
    Images attachées Images attachées  
    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 émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Pour avoir un trait avec un rond bleu une idée, en reprenant l'exemple de Jerome :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x = linspace(1,100,100);
    y = x.^2;
    figure
    p = plot(0,0,'-o',x, y,'b', x(1:10:end), y(1:10:end), 'bo');
    legend(p(1), 'test')
    ou en cachant le symbole initial hors tracé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    x = linspace(1,100,100);
    y = x.^2;
    figure
    p = plot(-10,-10,'-o',x, y,'b', x(1:10:end), y(1:10:end), 'bo');
    legend(p(1), 'test')
    axis([0 100 0 10000])

  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
    Effectivement, ma précédente réponse n'était pas bonne.

    Une alternative à la première solution donnée par phryte qui rend le premier point "invisible" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p = plot(NaN, NaN, '-o', x, y, 'b', x(1:10:end), y(1:10:end), 'bo');
    Ou encore en le superposant au premier point tracé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p = plot(x(1), y(1), '-o', x, y, 'b', x(1:10:end), y(1:10:end), 'bo');
    J'ai une préférence pour la solution avec les NaN
    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 à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Merci, c'est exactement ce qu'il me fallait, je n'y avait pas du tout pensé. J'ai aussi une préférence pour la version NaN, que je vais tout de suite utiliser !

    Encore merci !

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

Discussions similaires

  1. [GD] Création d'une légende
    Par fdthierry dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 17/11/2006, 13h33
  2. Imposer les parametres d'une fenetre
    Par kam81 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/11/2006, 10h38
  3. Réponses: 1
    Dernier message: 27/09/2006, 17h20
  4. [Livre SF] Je suis une légende
    Par VinceTlse dans le forum Lectures
    Réponses: 11
    Dernier message: 29/08/2006, 16h07
  5. Imposer la largeur d'une zone de liste ? est ce possible
    Par ahage4x4 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 23/05/2005, 16h21

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