1

问题

用于polarhistogram(theta)绘制包含 0-360 度方位角的数据集时。是否可以为给定的段指定颜色?

例子

例如,在下面的图中,是否可以指定 0 到 90 度(以及 180-270 度)之间的所有条都是红色的?而其余的仍然是蓝色的?

在此处输入图像描述

参考资料

我想如果它存在,它会在这里某处,但我无法弄清楚究竟是哪一部分:

https://www.mathworks.com/help/matlab/ref/polaraxes-properties.html

4

1 回答 1

1

如果您使用rose,您可以提取直方图的边缘并一一绘制每个条形图。这有点骇人听闻,但它可以工作,看起来很漂亮,并且不需要 Matlab 2016b。

theta = atan2(rand(1e3,1)-0.5,2*(rand(1e3,1)-0.5));
n = 25;
colours = hsv(n);

figure;
rose(theta,n); cla; % Use this to initialise polar axes
[theta,rho] = rose(theta,n); % Get the histogram edges
theta(end+1) = theta(1); % Wrap around for easy interation
rho(end+1) = rho(1); 
hold on;
for j = 1:floor(length(theta)/4)
    k = @(j) 4*(j-1)+1; % Change of iterator
    h = polar(theta(k(j):k(j)+3),rho(k(j):k(j)+3));
    set(h,'color',colours(j,:)); % Set the color
    [x,y] = pol2cart(theta(k(j):k(j)+3),rho(k(j):k(j)+3));
    h = patch(x,y,'');
    set(h,'FaceColor',colours(j,:),'FaceAlpha',0.2);
    uistack(h,'down');
end
grid on; axis equal;
title('Coloured polar histogram')

结果

在此处输入图像描述

于 2017-03-29T16:21:04.847 回答