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 に答える