MATLAB玫瑰图:增加径向增量?

时间:2012-06-28 17:47:00

标签: matlab graphics plot histogram polar-coordinates

我使用rose2.m生成许多角度直方图。我希望刻度显示每个bin中元素的数量范围在0-50之间,对于所有绘图,增量为10,即使特定绘图上的元素的最大数量小于50.有没有人知道如何我可以这样做吗?感谢。

3 个答案:

答案 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

screenshot

这样你就可以控制最大半径,虽然你无法真正控制步数(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的值的计数。然后可以使用该数据填充您的比例。