配列の3次元プロット

8 visualizaciones (últimos 30 días)
kou sasai
kou sasai el 24 de Jun. de 2021
Comentada: Hernia Baby el 25 de Jun. de 2021
配列 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 comentarios
Atsushi Ueno
Atsushi Ueno el 24 de Jun. de 2021
上記ギャラリーの中ではScatter Plot 3Dかなと思いました。
kou sasai
kou sasai el 24 de Jun. de 2021
ありがとうございます。試してみます。

Iniciar sesión para comentar.

Respuesta aceptada

Hernia Baby
Hernia Baby el 24 de Jun. de 2021
概要
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 comentario
Hernia Baby
Hernia Baby el 25 de Jun. de 2021
補足)もしaのなかに座標情報48×48×72行分が入っている場合はmeshgridは必要ありません。

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!