質問: 配列の3次元プロット 配列 a(48,48,72)に入っているデータを3次元x,y,z 軸上にプロットしたい。 中心(0,0,0),-24<=x<=24,-24<=y<=24,-36<=z<=36,としてa(1,1,1)に収納されている数値に対応したプロットを(x,y,z)=(-24,-24,-36)にプロットしたい。収納されている数値の大きさによってカラーリングも行いたい。 得られるプロットのイメージは図のような感じです。(これがカラーリングされている)
回答: 概要 scatter3で大丈夫ですが、もう一工夫いります。 おそらくそのままやると上手く図示できないか、直線になるのではないでしょうか? meshgridで立体的なプロットが可能となります。 せっかくなのでお遊びで四角い枠も作ってみましょう。 四角い枠を作る patchで立方体を作ります。詳しい作り方はこちら。 clear,clc,close all; vert = [0 0 0;1 0 0;1 1 0;0 1 0;0 0 1;1 0 1;1 1 1;0 1 1]; vert(vert==1)=40; vert(vert==0)=-40; fac = [1 2 6 5;2 3 7 6;3 4 8 7;4 1 5 8;1 2 3 4;5 6 7 8]; patch('vertices',vert,'faces',fac,... 'facevertexcdata',hsv(6),'facecolor','r','facealpha',.01) view(3) axis vis3d hold on 配列の3次元プロット 今回は刻み幅1の点とします。色は適当です。まずは座標。 x = -24:24; y = -24:24; z = -36:36; このまま描画すると直線になります。 ここで立体にするためにmeshgridを使います。 [x,y,z] = meshgrid(x,y,z); 最後にサイズと色を指定して、軸も消して完成です。 s = 1; m = abs(cos(2*pi*x(:)/48)+sin(2*pi*y(:)/48)+sin(2*pi*z(:)/72)); scatter3(x(:),y(:),z(:),s,m); ax = gca; ax.xaxis.visible ='off'; ax.yaxis.visible ='off'; ax.zaxis.visible ='off';