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 :

Addition d'histogrammes avec des couleurs [Débutant]


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 13
    Points
    13
    Par défaut Addition d'histogrammes avec des couleurs
    Bonjour,

    J'aimerais savoir comment additionner sur une même figure des histogrammes différents en les différenciant par couleurs.

    Par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    k1=[1 2 3 4 5 5];
    k2=[1 1 3 5];
    hist(k1);h = findobj(gca,'Type','patch');
    set(h,'FaceColor','r','EdgeColor','w');
    hold on;
    hist(k2);i = findobj(gca,'Type','patch');
    set(i,'FaceColor','g','EdgeColor','b');

    J'ai donc utilisé la méthode Hold mais celle ci semble écraser l'histogramme précédent.
    De plus, l'aide m'a proposé d'utiliser "findobj(gca,'Type','patch');" mais j'avoue que je ne sais pas trop à quoi cette dernière sert

    Merci d'avance,

    N4p

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    bonjour,

    utilise la combinaison des commandes hist pour chacun de tes graphes que tu réunis avec la commande bar3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    k1=[1 2 3 4 5 5];
    k2=[1 1 3 5];
     
    a=hist(k1);
    b=hist(k2);
     
    c=[a;b];
     
    bar3(c);
    Reste ensuite à modifier les couleurs. Et tu as l'option "stack" pour les superposer.

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Merci de votre réponse,

    Cependant j'ai plusieurs problèmes

    1) cela m'affiche un graphe en 3D, ce qui ne m'arrange guère pour la suite.
    2) l'affichage du code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    k1=[1 2 3 4 5 5];
    k2=[1 1 3 5];
     
    a=hist(k1);
    b=hist(k2);
     
    c=[a;b];
     
    bar3(c,'stack')
    Donne ceci :


    Or, j'aimerai plutôt avoir en abscisses les valeurs prises par k1 et k2 (donc ici entre 1et 5 pour l'exemple) et en ordonnée le nombre d'occurrences de ces valeurs (soit 1 ou 2).

    Voilà

    NB : dans votre réponse, je ne voyais pas le code que vous m'avez donné ni la suite de vos explications. Tout ceci n'est visible que si je fais "répondre".
    Est-ce normal ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Il suffit de prendre la transposée de c et de modifier la vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    k1=[1 2 3 4 5 5];
    k2=[1 1 3 5];
    
    a=hist(k1);
    b=hist(k2);
    
    c=[a;b]';
    
    bar3(c,'stack')
    view(-90,0)
    après, tu joues avec les couleurs, tu modifies les axes en utilisant les objets

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Voici un code complet ou tu as tous les éléments. A toi ensuite de modifier ce que tu souhaites.

    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
     
    k1=[1 2 3 4 5 5];
     k2=[1 1 3 5];
     
     a=hist(k1,[1:5]);  % Création de tes histo
     b=hist(k2,[1:5]);
     
     x=1:5;
     c=[a;b]';
     
    h=bar3(c,'stack'); % Superposition des deux histo
     
    t=get(h(1),'parent'); % Récupération des carac du graphe
     
    set(t,'ytick',x);
    set(t,'yticklabel',x)
    set(t,'ylim',[0 6])
     
    set(h(1),'facecolor',[0 0 0]); % Modification des couleurs
    set(h(1),'edgecolor',[0 1 0]);
     
    set(h(2),'facecolor',[1 0 0]); % Modification des contours
    set(h(2),'edgecolor',[0 0 0]);
     
    view(-90,0) % Passage en 2D

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup : en prenant la transposée cela fonctionne.

    De plus, pour ne pas utiliser un histogramme en 3D, remplacer "bar3" par "bar" fonctionne sans problème.

    Les couleurs changent automatiquement, c'est déjà une bonne chose et je regarderai comment les changer soi-même. (edit : ok, j'ai pas vu votre dernier post )

    Si j'ai un soucis je posterai ici. Merci beaucoup en tout cas !

    Autre question (ou faut il que je crée un nouveau topic ?) : comment faire pour récolter une fonction qui encadrerait mon histogramme ?

    Du genre des trapèzes ou encore triangles, enfin des formes simples comme sur la figure suivante (courbe en rouge):

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

Discussions similaires

  1. Simuler une listbox avec des couleurs
    Par Invité dans le forum Contribuez
    Réponses: 9
    Dernier message: 19/03/2020, 20h49
  2. Bug avec des couleurs dans un histogramme
    Par kstepankova dans le forum QlikView
    Réponses: 0
    Dernier message: 12/06/2013, 17h18
  3. Réponses: 8
    Dernier message: 02/11/2007, 07h24
  4. Réponses: 2
    Dernier message: 07/06/2007, 16h07
  5. Saisir un texte avec des couleurs
    Par l_seringa dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2007, 20h21

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