我使用rose2.m生成许多角度直方图。我希望刻度显示每个bin中元素的数量范围在0-50之间,对于所有绘图,增量为10,即使特定绘图上的元素的最大数量小于50.有没有人知道如何我可以这样做吗?感谢。
答案 0 :(得分:1)
此问题与this one相同,但您正在查看rose2
的特殊情况。
我可以使用以下代码将最大值锁定为50。首先,我在50处绘制一个空点,然后hold on
来锁定绘图。 rose2
然后使用这些边界。
代码:
x = (rand(100,1)*pi);
maxHistogramValue = 50;
figure(44);
clf
% Set the max value to maxHistogramValue:
polar(0, maxHistogramValue,'-k')
hold on;
% Now use rose2:
rose2(x);
答案 1 :(得分:1)
这是另一个例子(基于@Steve的想法):
%# data and angular histogram
x = rand(400,1) .* 2*pi;
[t,r] = rose(x); %# this does not generate a plot
%# set plot's max radial ticks
figure
rMax = 50;
h = polar(0, rMax);
delete(h)
set(gca, 'Nextplot','add')
%# draw patches instead of lines: polar(t,r)
[x,y] = pol2cart(t,r);
h = patch(reshape(x,4,[]), reshape(y,4,[]), 'b');
alpha(h, 0.5) %# note: this switches to OpenGL renderer
这样你就可以控制最大半径,虽然你无法真正控制步数(POLAR函数总是喜欢大约5个径向刻度;参见源代码)。
答案 2 :(得分:0)
我对rose2.m的内容并不完全清楚,但我想如果你有必要的数据,你可以设置自己的比例/图例。
听起来你有一个角度的数组/向量,范围在0到50之间。我们现在称之为angleArray。
要获取落入每个箱子的元素数量(10个单位实体中为0-50),您可以使用以下代码行:
binCounts = histc(angleArray, 0:10:50);
binCounts将是1乘n,其中n是长度(0:10:50)并且具有每个bin的值的计数。然后可以使用该数据填充您的比例。