2010-12-16 180 views
3

我想呈現兩個直方圖,並且我希望它們中的每一個都是不同的顏色。可以說一個紅色和一個藍色。到目前爲止,我已經改變了他們兩個的顏色,但只改變了相同的顏色。
這是代碼不同顏色的直方圖-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. 

回答

3

一種選擇是調用hist兩個載體:

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

另一種選擇是分配的答案輸出參數:

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

而且以最喜歡的風格/顏色繪製它們。

7

代碼中的h包含兩個修補程序對象的句柄。嘗試一種顏色分配給每個單獨:

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

在MATLAB標準庫,hist使用命令bar做它的繪圖,但使用bar本身爲您提供了更多的靈活性。傳入bar矩陣其列是每個直方圖的bin計數以不同顏色繪製每個直方圖,這正是您想要的。下面是一些示例代碼:

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

文檔是here