Matlab直方图比例BinEdges图

时间:2017-04-24 20:47:28

标签: matlab histogram matlab-figure

我想使用MATLAB直方图将我的数据集中的最大值分成一个bin,这样它们在y轴上可见,与较小的数字相比,它们很少。我可以使用BinEdges将大于4.4的数字分组到一个bin中,但是,我希望图中的bin在视觉上与其余的bin一样宽。也就是说,缩小X轴上的比例,但仅限于4.4和10之间的部分。我无法记录数据的比例。有没有办法缩放轴,或者在4.4到10之间将其分解?

Myhistogram=histogram(mydata, 'FaceColor', 'r', 'Normalization', 'probability', 'BinEdges', [0 0.1:0.05:4.4 10]);

histogram

1 个答案:

答案 0 :(得分:2)

有两种方法可以实现这一目标:

  1. 超级简单的方式:如果您只想将4.4及更高版本(甚至过去10)中的所有内容分区,那么只需将Inf代替10 bin edge:

    Myhistogram = histogram(mydata, 'FaceColor', 'r', ...
                                    'Normalization', 'probability', ...
                                    'BinEdges', [0 0.1:0.05:4.4 Inf]);
    

    这是我得到的(使用mydata = 1+1.5.*randn(1,10000);):

    enter image description here

    请注意,这只是在一个不错的点上切断x轴!如果你扩展x轴限制,你会看到像你的例子中的最后一个bin继续前进。如果你真的想要一个有限的最后一个bin,那么......


    1. 首先是Bin,然后是情节:您可以先使用histcounts进行分箱,然后使用histogram显示结果并更改一组边:< / p>

      [N, edges] = histcounts(mydata, 'Normalization', 'probability', ...
                                      'BinEdges', [0 0.1:0.05:4.4 10]);
      histogram('BinEdges', [edges(1:end-1) 4.45], 'BinCounts', N, 'FaceColor', 'r');
      

      注意我删除了edges的最后一个元素,并添加了一个4.45的值,以使最后一个bin与前一个bin的宽度相同。这是直方图(使用选项1中的相同数据):

      enter image description here

相关问题