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
。更改此代码以适用于任何颜色图应该很容易
我的问题如下。 我想用 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
。更改此代码以适用于任何颜色图应该很容易