我似乎有一个奇怪的问题,当我绘制以下内容时,两个直方图的条形似乎没有相同的宽度:
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]
答案 0 :(得分:1)
MATLAB suggests您使用histogram()
代替hist()
。
如果我不得不猜测为什么你的酒吧有不同的宽度,那就是因为每个直方图都有不同数量的垃圾箱,尽管我不会接受我的话。 (它也可能是一种风格化的东西,其中条形图是偏移的,因此您可以看到两种颜色,因为hist()
不会像histogram()
那样混合。)
您可以使用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');
希望这有所帮助!
答案 1 :(得分:1)
我没有达到目的,但两者的宽度相同,箱子不同。如果你想在同一个图中显示两者以进行比较,那么你必须采用这种方式
bar([X',Y'])
xlable('-->No of bins')
legend('Feature1','Feature2')