MatLab 玫瑰色按 bin 大小

MatLab Rose color by bin size

我的问题如下。 我想用 Matlab 绘制玫瑰图。 (http://de.mathworks.com/help/matlab/ref/rose.html) 我有以下代码:

f2=figure('visible','off');
h=rose(degtorad(angles(:,i)),40);
title(['Marker '], 'FontSize',20)
x=get(h,'Xdata');
y=get(h,'Ydata');
g=patch(x,y,[0.3 0.3 0.3]);
saveas(f2,'\roses\marker.jpg')

这很好用。 但我现在想根据垃圾箱的大小更改其垃圾箱的颜色。 这样最长的箱子是黑色的,最短的箱子或多或少是白色的。 其他的都是或多或少的深灰色,这取决于它的大小。

我希望我的问题很清楚。

这可能吗? 非常感谢。 班特

编辑: 我记下了我认为的问题! link 我将 link 添加到我的保管箱文件夹中的 txt 文件:

https://www.dropbox.com/s/u17n4rv0oma5lbk/Angles.txt?dl=0

在此 txt 文件中保存了一堆角度。 如果我使用这些角度 [它们是度数,所以我做了 *2*pi/360] 而不是 rand([200 1])*2*pi; 它有点修补垃圾箱错误。 错误一定是在我的角度,但我不知道在哪里! 感谢您的回答!

如果您的所有数据都在 0-2*pi 之间,这很容易做到。如果不是,好吧,放在那个范围之间,应该不难做到。

theta = rand([200 1])*2*pi; % create angles between 0-2pi
nbins=12;                    % Define Number of bins

h=rose(theta,nbins);
title(['Marker '], 'FontSize',20) %plot


x=get(h,'Xdata');
y=get(h,'Ydata');

sortedt=sort(theta); % Sort angles
nel=hist(sortedt,nbins); % get amount of angles in each bin

for ii=1:nbins
   sc=(nel(ii)-min(nel))/(max(nel)-min(nel)); % scale between 0-1
   patch(x(1+(ii-1)*4:4+(ii-1)*4),y(1+(ii-1)*4:4+(ii-1)*4),[1 1 1]*sc );

end

编辑:我刚刚意识到你想要黑色的大号。好吧,只需添加 sc=1-sc。更改此代码以适用于任何颜色图应该很容易