2010-12-16 13 views
3

私は2つのヒストグラムを表示しようとしていますが、それぞれの色が異なるようにしたいと思います。 1つは赤、もう1つは青と言うことができます。これまで私は両者の色を変更したが、同じ色にのみ変更した。
このコード異なる色のヒストグラム - 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には、2つのパッチオブジェクトのハンドルが含まれています。個別に色を割り当てるようにしてください:MATLABの標準ライブラリで

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

histは、そのプロットを行うには、コマンドbarを使用していますが、それ自体でbarを使用すると、あなたに多くの柔軟性を提供します。 barに行列を渡すと、それぞれのヒストグラムのビン数が列になります。は、ヒストグラムをそれぞれ異なる色でプロットします。これはまさにあなたが望むものです。ここではいくつかのサンプルコードです:barため

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

ドキュメントがhereです。

関連する問題