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