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 :

Tracé de courbes et légende dans une boucle for


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Points : 16
    Points
    16
    Par défaut Tracé de courbes et légende dans une boucle for
    Bonjour,
    je rencontre un problème dans le traitement de mes données expérimentales. Je suis en train d'écrire un script qui me donnerait au final une figure dans laquelle je trace plusieurs courbes.
    Les données sources sont contenues dans des matrices : datax et datay, je récupère pour chaque courbe la colonne qui m'intéresse et je passe à la suivante en utilisant une boucle for.
    Voici le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    figure(1)
    hold on
     
     for i=1:length(listef)  
        plot(datax(:,1),datay(:,i),'MarkerSize',10)
        legend(sprintf('f= %d Hz',listef(i)));
     end
    Et la figure que j'obtiens est en pièce jointe.
    Les problèmes que je rencontre :
    - je pensais qu'une légende serait créée pour chaque courbe mais ce n'est pas le cas, finalement il n'y a que la légende du dernier graphique tracé.
    - je voudrais les axes en logarithmique, mais si j'utilise la commande loglog ou semilogy à la place de plot, il n'y a pas de modification ! Et aucun message d'erreur pour autant !
    - enfin je souhaiterais attribuer des couleurs différentes pour chaque courbe, mais là ce serait la cerise sur le gâteau (je l'appliquerais sur un nombre limité de courbes bien entendu, pour que ça soit lisible).
    Voila j'espère que vous aurez des idées à me proposer, je pense que tout vient de la boucle for, mais je ne vois pas comment ajouter autrement des courbes de manière automatique sur une même figure...
    Merci pour votre aide !
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Pour les couleurs et la légende, un petit tour par la
    Comment associer une couleur unique à chaque courbe tracée ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Ok merci !
    Voici mon code mis à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    figure(1)
    hold on
     
     for i=1:length(listef)  
        h(i)=plot(datax(:,1),datay(:,i),'MarkerSize',10)  
     end
    legend(h,num2str(listef));
    et la figure que j'obtiens ci-jointe.

    Maintenant j'aimerais "personnaliser" mes légendes en ajoutant du texte. Chaque légende serait du type "f=... Hz"
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    legend(h,sprintf('f= %s Hz', num2str(listef)))
    mais ça ne marche pas. Avez-vous une solution ?

    Et concernant le passage à des axes logarithmiques, quelqu'un a-t-il une idée ?
    Merci !
    Images attachées Images attachées  

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    J'étais persuadée qu'il y avait quelque chose dans la FAQ sur ce sujet mais je ne trouve pas.

    Mais c'est un sujet déjà traité (par exemple là : http://www.developpez.net/forums/d77...iable-courbes/)

    Il faut créer un tableau de cellules.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    figure(1)
    hold on
     
     for i=1:length(listef)  
        h(i)=plot(datax(:,1),datay(:,i),'MarkerSize',10) ;
        legh{i} =  sprintf('f= %s Hz', num2str(listdef(i)));
     end
    legend(h,legh);

Discussions similaires

  1. légende dans une boucle
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 2
    Dernier message: 11/03/2012, 22h53
  2. [Débutant] légende dans une boucle
    Par shakes06 dans le forum MATLAB
    Réponses: 5
    Dernier message: 30/04/2011, 23h59
  3. [legend] Légende dans une boucle
    Par guefrachi dans le forum MATLAB
    Réponses: 1
    Dernier message: 02/02/2011, 17h53
  4. [legend] Légende dans une boucle
    Par L1011 dans le forum MATLAB
    Réponses: 4
    Dernier message: 12/05/2008, 14h48
  5. [Débutant] Tracé de courbe dans une boucle FOR-END
    Par cozo22 dans le forum MATLAB
    Réponses: 8
    Dernier message: 03/04/2008, 16h42

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