Matlab直方图尺度BinEdges图

Matlab histogram scale BinEdges figure

我想使用 MATLAB 直方图将数据集中的最大值分箱到一个分箱中,以便它们在 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]);

有两种方法可以实现:

  1. 超级简单的方法:如果你只想将 4.4 及更高版本(甚至超过 10)的所有内容装箱,那么只需输入 Inf 而不是最后一个 bin 边缘中的 10:

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

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

    请注意,这只是在一个很好的点上切断了 x 轴!如果您扩展 x 轴限制,您将看到最后一个 bin,就像您的示例中那样继续前进。如果你真的想要一个有限的最后一个垃圾箱,那么......


  1. 先分箱,然后绘制: 您可以先使用 histcounts, then display the results with histogram 和一组改变的边进行分箱:

    [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 的宽度与之前的相同。这是直方图(与选项 1 中的数据相同):