2014-05-07 6 views
1

Dans matlab, est-il possible de tracer un histogramme de données regroupées par catégories?tracer un histogramme de données regroupées par catégories dans matlab

Par exemple, supposons que j'ai importé un fichier Excel contenant les colonnes de données suivantes:

Year Month Species Count 
2005  2  spider  5 
2005  4  mosquito  8 
2006  1  midge  4 
2008  4  spider  3 

Le chiffre devrait avoir le temps le long de l'axe des x (mois et années) et compter sur l'axe des y . Un histogramme groupé (couleurs différentes pour différentes espèces) doit être tracé aux points temporels correspondants (notez qu'il existe des points temporels manquants lorsque Count = 0).

+0

C'est possible (http://www.mathworks.com.au/help/matlab/ref/bar.html) mais nous aurons besoin de plus d'informations pour donner des conseils spécifiques. – David

+0

Merci @David - Quelles autres informations? Il y a ~ 5 espèces différentes et la plage de temps est entre 2004 et 2012. Merci. – user2861089

+0

Un petit échantillon de la façon dont vos données sont enregistrées aiderait, que ce soit une matrice, un tableau de cellules, etc – David

Répondre

0

Voici un exemple, avec quelques données générées de façon aléatoire. Vous devrez vérifier la matrice D et voir si elle a la même structure que vos données.

clear,clc,close 
Y=[2013:1:2014]; 
for i=1:length(Y) 
    for j=1:12 
     for k=1:3 
      D(i,j,k)=randi(5)-1; 
     end 
    end 
end 

for i=1:3 
    t=squeeze(D(:,:,i)).'; 
    M(:,i)=t(:).'; 
end 
bar(M) 

Je suppose que vous pouvez créer D être la même chose que moi. Vous devrez convertir les chaînes en Species à l'aide de chiffres, par exemple .:

Species={'spider';'midge';'mosquito';'spider'} 
S=zeros(size(Species)) 
S(strcmp(Species,'spider'))=1 
S(strcmp(Species,'midge'))=2 
S(strcmp(Species,'mosquito'))=3 

puis D=[Year Month S Count].


Espérons que l'idée vous aide au moins.

Questions connexes