1

我的问题如下。我想用 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')

这工作正常。但我现在想通过垃圾箱的大小来改变它的垃圾箱的颜色。所以最长的垃圾箱是黑色的,最短的垃圾箱或多或少是白色的。所有其他的或多或少都是深灰色,这取决于它的大小。

我希望我的问题很清楚。

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

编辑:我解决了我认为的问题!下面的链接链接到我的保管箱文件夹中的 txt 文件:

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

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

4

1 回答 1

1

如果您的所有数据都在 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. 更改此代码以适用于任何颜色图应该很容易

于 2015-02-04T15:40:54.950 回答