我正在尝试将数据设为x轴, y轴设为按10 分组的值。参见下面的Plot作为示例
我尝试使用 bar(x),但我不确定如何在正确的绘图类别中获取数字。
例如:
如果数据是x=1,5.3,9,10.5,12,13,15.2,25,191,192.4
the group 0-10 should be 1,5.3,9
the group 10.1-20 should be 10.5,12,13,15.2
the group of 20.1-30 should be 25
.
.
.
the group of 190.1-200 should be 191,192.4
PS:我正在使用octave 3.8.1,就像matlab
答案 0 :(得分:3)
您可以使用histc
。但是histc
认为每个bin的左边缘,而不是右边缘的相等性:
bincounts = histc(x,binranges)
计算x
中每个指定bin范围内的值的数量。输入binranges
确定每个bin的端点。输出bincounts
包含每个bin中x
的元素数。例如,如果
binranges
等于向量[0,5,10,13]
,则histc
会创建四个分箱。第一个bin包含大于或等于0
且严格小于5
的值。第二个bin包含大于或等于5
且小于10
的值,依此类推。最后一个bin包含标量值13
。
要在左边设置相等条件,最好使用bsxfun
手动执行:
y = diff(sum(bsxfun(@le, x(:), 0:10:200), 1));
sum(bsxfun(...), 1)
查找x
的条目数小于或等于0
,10
,... 200
的条目数;然后diff(...)
提供所需的结果y
:
y =
3 4 1 0 0 0 0 [...] 2
然后,您可以使用bar(y)
绘制条形图。如果您还想更改x轴上显示的文本,请设置轴的'xticklabel'
属性:
bar(y);
strings = {'0-10', '10-20', '20-30'}; %// manually define all strings up to '190-200'
set(gca, 'xticklabel', strings)
答案 1 :(得分:1)
使用您的数据,您可以使用:
x = [1 5.3 9 10.5 12 13 15.2 25 191 192.4];
nbins = round(max(x)/10+.5);
hist(x, nbins);
这是结果: