2017-09-03 32 views
1

に私は次のようにプロットしたときに、二つのヒストグラムのバーは同じ幅を持っていないようだという奇妙な問題を抱えているように見える「にホールド」の使用:Matlabの:ヒストグラムの結果に対して異なるビン幅

hold on 
[N,X] = hist(feature_1(:,1)) 
Bh = bar(X,N,'facecolor',[0.7 0.2 0.2]); 
[A,Y] = hist(feature_2(:,1)) 
Bh = bar(Y,A,'facecolor',[0.3 0.6 0.2]); 
hold off 

なぜですか? ありがとう

編集:入力を申し訳ありません。例えば 、feature_1(:,1:5) =

[0.72507334 
0.019627856 
0.19571847 
-0.23818338 
1.6526113 
0.23925941 
0.69914567 
0.15934853 
0.28082907 
-0.035707321 
0.072205774 
-0.15791744 
0.81654513 
0.19398287 
-0.33666527 
-0.24295111 
-1.0770919 
-1.2977802 
0.67290813 
-0.56841594 
-0.28522778 
-2.2450733 
-1.4413888 
-2.2216258 
-0.46346179 
1.8239603 
1.6443830 
1.3715266 
0.34339836 
-0.29903534] 

feature_2(:,1) =

[0.18098037 
-0.81469119 
-0.086869463 
-0.67799056 
1.1408544 
1.2589806 
1.0065788 
0.64472252 
-0.70849174 
0.69045025 
-0.0031675443 
-0.82824785 
0.15744546 
-0.028384065 
-0.065391541 
-0.35754660 
-1.0809286 
-0.12427557 
1.3792992 
-0.28740802 
1.7593855 
-1.2061185 
-3.0156419 
-1.1680259 
0.23381938 
0.97127295 
0.91487378 
0.83101124 
0.24949571 
-0.96599007] 

答えて

1

MATLAB suggestsあなたがhistogram()代わりのhist()を使用しています。

なぜあなたのバーの幅が違うかを推測しなければならないのは、ヒストグラムごとにビン数が異なるからです。 (それはまたhistogram()のようにブレンドしていないhist()として、あなたは両方の色を見ることができるようにバーがオフセットされている文体のものである可能性がありません。)

あなたはhistogram()を使用して幅を指定することにより、幅の問題を解決することができます

histogram(feature_1(:,1:5),'BinWidth',.5); 
hold on 
histogram(feature_2(:,1),'BinWidth',.5); 

あなたはこのコードを実行する場合は、描画スタイルの違いを確認できるようになります:これはやや役立っ

subplot(2,1,1) 
hold on 
[N,X] = hist(feature_1(:,1:5)); 
Bh = bar(X,N,'facecolor',[0.7 0.2 0.2]); 
[A,Y] = hist(feature_2(:,1)); 
Bh = bar(Y,A,'facecolor',[0.3 0.6 0.2]); 

subplot(2,1,2) 
histogram(feature_1(:,1:5),'BinWidth',.5,'FaceColor','r'); 
hold on 
histogram(feature_2(:,1),'BinWidth',.5,'FaceColor','g'); 

願っています!

+0

多少ですか?より絶対的に素晴らしい答え:)!どうもありがとうございます – Pegah

1

私は目的を得ることはできませんが、幅は両方とも同じです。ビンは異なります。比較のために両方を同じ図に表示したい場合は、この方法で対応する必要があります。

bar([X',Y']) 
xlable('-->No of bins') 
legend('Feature1','Feature2') 
関連する問題