3

2 つのヒストグラムを表示しようとしていますが、それぞれを異なる色にしたいと考えています。1 つの赤と 1 つの青としましょう。これまでのところ、両方の色を変更することはできましたが、同じ色にしか変更できませんでした。
これがコードです

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.
4

3 に答える 3

7

コード内のhには、2 つのパッチ オブジェクトへのハンドルが含まれています。それぞれに個別に色を割り当ててみてください。

%# ...
h = findobj(gca, 'Type','patch');
set(h(1), 'FaceColor','r', 'EdgeColor','w')
set(h(2), 'FaceColor','b', 'EdgeColor','w')
于 2010-12-16T16:43:31.953 に答える
3

hist1 つのオプションは、両方のベクトルを呼び出すことです。

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

もう 1 つのオプションは、答えを出力引数に割り当てることです。

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

そして、お気に入りのスタイル/色でそれらをプロットします。

于 2010-12-16T12:40:16.417 に答える
1

MATLAB 標準ライブラリでhistは、コマンドbarを使用してプロットを行いbarますが、単独で使用すると柔軟性が大幅に向上します。列が各ヒストグラムのビン数でbarある行列に渡すと、それらの各ヒストグラムが異なる色でプロットされます。これはまさにあなたが望むものです。コード例を次に示します。

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

のドキュメントbarこちらです。

于 2010-12-16T18:24:40.873 に答える