配列 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)にプロットしたい。収納されている数値の大きさによってカラーリングも行いたい。
得られるプロットのイメージは図のような感じです。(これがカラーリングされている)

댓글 수: 2

Atsushi Ueno
Atsushi Ueno 2021년 6월 24일
上記ギャラリーの中ではScatter Plot 3Dかなと思いました。
kou sasai
kou sasai 2021년 6월 24일
ありがとうございます。試してみます。

댓글을 달려면 로그인하십시오.

 채택된 답변

Hernia Baby
Hernia Baby 2021년 6월 24일

1 개 추천

概要
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';

댓글 수: 1

Hernia Baby
Hernia Baby 2021년 6월 25일
補足)もしaのなかに座標情報48×48×72行分が入っている場合はmeshgridは必要ありません。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

제품

릴리스

R2021a

질문:

2021년 6월 24일

댓글:

2021년 6월 25일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!