2010-12-16 17 views
3

Ich versuche, zwei Histogramme zu präsentieren, und ich möchte, dass jeder von ihnen in einer anderen Farbe ist. sagen wir mal ein Rot und ein Blau. Bisher habe ich den Wechsel der Farben der beiden vorgenommen, aber nur in der gleichen Farbe.
Dies ist der Codepräsentieren Histogramme in verschiedenen Farben - Matlab

close all 
b=-10:1:10; 
x=randn(10^5,1); 
x=(x+5)*3; 
y=randn(1,10^5); 
y=(y+2)*3; 
hist(x,100) 
hold on 
hist(y,100); 

h = findobj(gca,'Type','patch'); 
set(h,'FaceColor','r','EdgeColor','w') 
%the last two lines changes the color of both hists. 

Antwort

3

Eine Option ist hist auf beiden Vektoren zu nennen:

hist([x(:) y(:)], 100); 

Eine weitere Option ist die Antwort auf ein Ausgabeargument zuzuordnen:

[hx, binx] = hist(x, 100); 
[hy, biny] = hist(y, 100); 

Und Zeichnen Sie sie in Ihrem Lieblings-Stil/Farbe.

7

Die h in Ihrem Code enthält das Handle zu zwei Patch-Objekten. Versuchen Sie, eine Farbe zu jedem separat zuweisen:

%# ... 
h = findobj(gca, 'Type','patch'); 
set(h(1), 'FaceColor','r', 'EdgeColor','w') 
set(h(2), 'FaceColor','b', 'EdgeColor','w') 
1

In der MATLAB-Standardbibliothek, hist den Befehl verwendet bar seine Plotten zu tun, aber bar selbst mit gibt Ihnen viel mehr Flexibilität. Passing in bar eine Matrix , deren Spalten sind Histogramme Bin Zählungen Plots jedes dieser Histogramme in einer anderen Farbe, die genau das ist, was Sie wollen. Hier einige Beispiel-Code:

[xcounts,~] = hist(x,100); 
[ycounts,~] = hist(y,100); 
histmat = [reshape(xcounts,100,1) reshape(ycounts,100,1)]; 
bar(histmat, optionalWidthOfEachBarInPixelsForOverlap); 

Dokumentation für barhere ist.

Verwandte Themen