以不同颜色呈现直方图 - matlab

时间:2010-12-16 11:33:46

标签: matlab statistics histogram

我试图呈现两个直方图,我希望它们中的每一个都有不同的颜色。让我们说一个红色和一个蓝色。到目前为止,我把改变了两者的颜色,但只改为相同的颜色 这是代码

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 个答案:

答案 0 :(得分:7)

代码中的h包含两个补丁对象的句柄。尝试分别为每个分配颜色:

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

答案 1 :(得分:3)

一种选择是在两个向量上调用hist

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

另一种选择是将答案分配给输出参数:

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

以您喜欢的风格/颜色绘制它们。

答案 2 :(得分:1)

在MATLAB标准库中,hist使用命令bar进行绘图,但使用bar本身可以提供更大的灵活性。传入bar矩阵,其列为每个直方图的bin计数,以不同的颜色绘制每个直方图,这正是您想要的。这是一些示例代码:

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

bar的文档为here