我想使用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]);
答案 0 :(得分:2)
有两种方法可以实现这一目标:
超级简单的方式:如果您只想将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);
):
请注意,这只是在一个不错的点上切断x轴!如果你扩展x轴限制,你会看到像你的例子中的最后一个bin继续前进。如果你真的想要一个有限的最后一个bin,那么......
首先是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中的相同数据):