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 :

Faire un graphique avec beaucoup de variable en couleurs


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Faire un graphique avec beaucoup de variable en couleurs
    Bonjour j'ai un problème je plot 26 variables et les couleurs de certaines sont les mêmes ... le graph déjà que peu lisible est impossible à interpréter.

    Merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    close all
    plot(date(ww+1:H,:),cumsum(Ptfopt_rdt))
    grid on
    datetick('x','yy')
     
    legend('EW','GMV','MaxDiv1','Maxdiv2','GMVC','MaxDiv1c','Maxdiv2c','GMV_reac','MaxDiv1_reac','Maxdiv2_reac','GMVC_reac','MaxDiv1c_reac','Maxdiv2c_reac','GMV_emp','MaxDiv1_emp','Maxdiv2_emp','GMVC_emp','MaxDiv1c_emp','Maxdiv2c_emp','GMV_ewma','MaxDiv1_ewma','Maxdiv2_ewma','GMVC_ewma','MaxDiv1c_ewma','Maxdiv2c_ewma')

  2. #2
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    Tu peux rajouter des makers, tu peux changer le style de ta ligne et ça te donneras déjà beaucoup plus de courbes différentes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    h=plot(rand(100,1));
    set(h,'Marker','+')
    hold on
    h=plot(rand(100,1));
    set(h,'LineStyle',':')

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Merci pour ton aide, j'ai mis ce bout de code avant le tiens mais ça n'a pas fonctionné ;(

  4. #4
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    Oui c'est normal, car ce que je te donnais n'étais qu'un exemple à adapter pour ton code.
    Ce que tu dois faire dans ton cas c'est quelque chose qui ressemble à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    hold on 
    for i=1:26
         h=plot(date(ww+1:H,:),cumsum(Ptfopt_rdt(i,:))); %attention, ce sera surement à changer ton Ptfopt_rdt(i,:), je ne sais pas à quoi ressemble tes données
         if i>=10 && i<20
               set(h,'LineStyle',':')
         end
     
        if i>=20
              set(h,'LineStyle','--')
        end
    end
    hold off
    Ce qui va te donner les variables de 1 à 9 en trait plein, de 10 à 19 en pointillé, de 20 à 26 en "dashed line". J'ai pas regardé il y a combien de couleur par défaut, s'il y en a moins de 10, il va falloir que tu change l'intervalle des if (càd que tu mettes des if i>=5 && i<10 par exemple) et que tu rajoutes d'autres types de LineStyle ou markers.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Impeccable,

    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
    hold on 
    for i=1:25
         h=plot(date(ww+1:H,:),cumsum(Ptfopt_rdt(:,i))); %attention, ce sera surement à changer ton Ptfopt_rdt(i,:), je ne sais pas à quoi ressemble tes données
         if i>=10 && i<20
               set(h,'LineStyle',':')
         end
     
        if i>=20
              set(h,'LineStyle','--')
        end
    end
    hold off
    grid on
    datetick('x','yy')
     
    legend('EW','GMV','MaxDiv1','Maxdiv2','GMVC','MaxDiv1c','Maxdiv2c','GMV_reac','MaxDiv1_reac','Maxdiv2_reac','GMVC_reac','MaxDiv1c_reac','Maxdiv2c_reac','GMV_emp','MaxDiv1_emp','Maxdiv2_emp','GMVC_emp','MaxDiv1c_emp','Maxdiv2c_emp','GMV_ewma','MaxDiv1_ewma','Maxdiv2_ewma','GMVC_ewma','MaxDiv1c_ewma','Maxdiv2c_ewma')
    Ca tourne, le gros problème c'est que les couleurs sont bleu pour toutes les variables, mais j'ai bien les différentes style de trait.

  6. #6
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    Ah oui, effectivement, je n'y avait pas pensé...

    Donc ce que tu peux faire c'est réutiliser ton code original pour le plot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(date(ww+1:H,:),cumsum(Ptfopt_rdt))
    Ensuite tu retrouves le handles de tous tes lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    h_list = findobj(gca,'Type','line')
    Ensuite tu modifies tes propriétés comme j'ai déjà écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for h=1:length(h_list)
         if h>=10 && h<20
               set(h_list(h),'LineStyle',':')
         end
     
        if h>=20
              set(h_list(h),'LineStyle','--')
        end
    end

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Bon, j'ai finalement changé de technique,

    Je vais faire les graphique des variables qui sont les plus significative entre elle.

    Comme je peux faire pour que ça me graphe le cumsum non plus de toutes les colonnes de ma matrice mais seulement 1/3 ? merci d'avance

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Up une idée ...

    en gros j'ai un une matrice X = [V1 V2 V3 ... V19] ou V1 etc sont des vecteurs colonne.

    En fait je veux lui faire grapher les 7 premiers vecteurs ensemble, les 7 suivante et les 5 derniers.

    Je n'y arrive pas avec une boucle for.

    Le mieux serait même que je puisse ployer V1 avec V2 à V7; V1 avec V7 à V14; V1 avec V14 à V19.

    Merci pour votre aide

  9. #9
    Membre éclairé
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Points : 719
    Points
    719
    Par défaut
    Salut,

    Dans les grandes lignes, je te conseille d'enregistrer les handles de chaque objet graphique que tu crées : celui de ta figure, celui de ta zone d'affichage graphique, ceux de chacune de tes lignes. Il te suffit ensuite de faire un set sur les handles de tes lignes pour changer leur couleur ou leur forme.

    Cordialement,
    Je ne réponds pas aux MP techniques. Le forum est là pour ça.
    La raison est simple : il est ennuyeux de répondre à une seule personne, alors que la réponse peut servir à tout le monde.
    Conclusion : n'hésitez pas à utiliser le forum pour poser vos questions.
    Matlab 2005 - ver.7.1.0.183 (R14) Service Pack 3

Discussions similaires

  1. [XL-2007] Faire un graphique avec une liste de données
    Par Deallyra dans le forum Excel
    Réponses: 14
    Dernier message: 21/01/2010, 20h08
  2. [JpGraph] faire un graphique avec des durées
    Par girardeau dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/01/2009, 15h04
  3. Comment faire un graphique avec des dates
    Par T-MAT dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/01/2009, 10h35
  4. Faire un graphique avec BIRT 2.1
    Par tiboudchou dans le forum BIRT
    Réponses: 1
    Dernier message: 10/08/2006, 21h30
  5. faire des graphiques avec Perl
    Par And_the_problem_is dans le forum Modules
    Réponses: 2
    Dernier message: 16/07/2003, 16h08

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