2012-02-03 7 views
3

測定の角度に応じてデータを表現したいと思います。私の場合はMatlabでディスクをプロットし、角度によって色が変化する

angle=[0 90 180 270 360]; 
value=[1 2 3 4]; 

length(angle)=73

どのように私は、半径線の色は、ベクトル値に応じて変化するディスクをプロットすることができます:私はそのようなものを持っています。

imagescのようなものがディスクにあります。

私はローズを使ってみることに失敗しましたが、最大20の角度に制限されています。

答えて

3

:私は変化するであろう唯一のものはforループです。三角形を描画するプリミティブpatchコマンドを使用します。 - 非常に良さそうに見えます

enter image description here

function PlotDisc 
    thetas=(0:5:360)'*pi/180; 
%  r=(0:0.1:1)'; 
    r = 1; 
    [x,y]=pol2cart(thetas,r); 
    colMap = GetColMap(); 
    for i=1:numel(x)-1 
     X = [0 x(i) x(i+1) 0]; 
     Y = [0 y(i) y(i+1) 0]; 
     col = i/(numel(x)-1) * numel(colMap); 
     patch(X,Y,col,'EdgeAlpha',0); 
    end 
    axis equal 
end 

function colMap = GetColMap() 
    colMap = ... 
    [0.0417   0   0 
    0.0833   0   0 
    0.1250   0   0 
    0.1667   0   0 
    0.2083   0   0 
    0.2500   0   0 
    0.2917   0   0 
    0.3333   0   0 
    0.3750   0   0 
    0.4167   0   0 
    0.4583   0   0 
    0.5000   0   0 
    0.5417   0   0 
    0.5833   0   0 
    0.6250   0   0 
    0.6667   0   0 
    0.7083   0   0 
    0.7500   0   0 
    0.7917   0   0 
    0.8333   0   0 
    0.8750   0   0 
    0.9167   0   0 
    0.9583   0   0 
    1.0000   0   0 
    1.0000 0.0417   0 
    1.0000 0.0833   0 
    1.0000 0.1250   0 
    1.0000 0.1667   0 
    1.0000 0.2083   0 
    1.0000 0.2500   0 
    1.0000 0.2917   0 
    1.0000 0.3333   0 
    1.0000 0.3750   0 
    1.0000 0.4167   0 
    1.0000 0.4583   0 
    1.0000 0.5000   0 
    1.0000 0.5417   0 
    1.0000 0.5833   0 
    1.0000 0.6250   0 
    1.0000 0.6667   0 
    1.0000 0.7083   0 
    1.0000 0.7500   0 
    1.0000 0.7917   0 
    1.0000 0.8333   0 
    1.0000 0.8750   0 
    1.0000 0.9167   0 
    1.0000 0.9583   0 
    1.0000 1.0000   0 
    1.0000 1.0000 0.0625 
    1.0000 1.0000 0.1250 
    1.0000 1.0000 0.1875 
    1.0000 1.0000 0.2500 
    1.0000 1.0000 0.3125 
    1.0000 1.0000 0.3750 
    1.0000 1.0000 0.4375 
    1.0000 1.0000 0.5000 
    1.0000 1.0000 0.5625 
    1.0000 1.0000 0.6250 
    1.0000 1.0000 0.6875 
    1.0000 1.0000 0.7500 
    1.0000 1.0000 0.8125 
    1.0000 1.0000 0.8750 
    1.0000 1.0000 0.9375 
    1.0000 1.0000 1.0000] ; 

end 
1

私は極データをプロットしなければならず、何か類似のものを探す必要がありました。それはあなたのニーズに対応する場合、私は知らないが、私はあなたの問題に私の解決策を適応し、ここにある:

theta=(0:360)'*pi/180; 
r=(0:0.1:1)'; 
value=repmat([360 (1:360)],size(r,1),1); 
[THETA,R]=meshgrid(theta,r); 
[X,Y]=pol2cart(THETA,R); 
surf(X,Y,value,'edgecolor','none'); 
view(0,90); 

UPDATE:あなたはアンドレイ絶対的に正しい、と私はより多くのメモリを取るために、3Dグラフィックスを疑います多くの速度が遅く表示されていましたが、その時点で私はどんな方法も見つけられませんでした。あなたのソリューションはより良いです、私は今から使用します。これは、3Dグラフィックス、2Dのみを使用していない別の代替である

r=1; 
dtheta=0.01; 
theta=linspace(0,2*pi,100)'; 
n=numel(theta); 
[x,y]=pol2cart(theta,r); 
figure; 
cmap=colormap(jet); 
X=[zeros(1,n-1);x(1:end-1)';x(2:end)';zeros(1,n-1)]; 
Y=[zeros(1,n-1);y(1:end-1)';y(2:end)';zeros(1,n-1)]; 
C=numel(cmap)*(1:n-1)/n-1; 
patch(X,Y,C,'EdgeAlpha',0); 
axis equal; 
+0

1:ここでの結果です!しかし、それは3Dグラフィックです。いくつかの用途には問題があるかもしれません。 –

+0

つまり、イメージを回転すると、「階段」効果が表示されます。 –

+0

こんにちは、ありがとう。私の使用のために、それは完全に判明します。 – Castim

関連する問題