3d plots with attributes of points

53 次查看(过去 30 天)
BERNARDO CHIARAVALLI
BERNARDO CHIARAVALLI 2024-11-20,16:15
评论: BERNARDO CHIARAVALLI about 2 hours 前
Good evening,
I built in matlab a sets of 3d points with same x and y coordinates and different z and I have used tham in another program wich calculate in those positions some variables (speed and direction of fluid). These points are organized in 12 matrix in wich x and y remain the same, while z varies (with depth).
I want to built a script to represent them and colour them by the value of speed and direction. I read about plot3 whic take in imput 3 vectors and display them in 3d space but I don't know how to afficiently connect the 3d coordinates with attributes.
Can you please give me some advice?
Thank you very much
  4 个评论
Jacob Mathew
Jacob Mathew 2024-11-21,3:48
Hey BERNARDO,
You can add columns that represent the color as well as other properties to the matrix that has the coordianates. The column values can be based on your calculation of speed and direction or other parameters as well. This can then be passed to plotting functions like scatter3 which will plot them with the respective color.
An example dataset and plotting is as follows:
% Initialize matrix with 12 rows and 4 columns
data = zeros(12, 4);
% Generate data points with x = y
for i = 1:12
x = i; % x and y are the same
y = i;
z = rand(); % Random z coordinate
color = i; % Unique color for each point
% Assign values to the matrix
data(i, :) = [x, y, z, color];
end
% Plot the points using scatter3
figure;
scatter3(data(:, 1), data(:, 2), data(:, 3), 100, data(:, 4), 'filled');
% Label the axes
xlabel('X Axis');
ylabel('Y Axis');
zlabel('Z Axis');
title('3D Scatter Plot with Unique Colors');
grid on;
BERNARDO CHIARAVALLI
BERNARDO CHIARAVALLI about 3 hours 前
Thank you for your suggestion, I'm workin on it!

请先登录,再进行评论。

回答(1 个)

KSSV
KSSV 2024-11-21,5:49
Let data be your three columns matrix.
x = data(:,1) ;
y = data(:,2) ;
z = sata(:,3) ;
% Plot as unstructured grid
dt = delaunayTriangulation(x,y) ;
p = dt.Points ;
tri = dt.ConnectivityList ;
F = scatteredInterpolant(x,y,z) ;
z = F(p(:,1),p(:,2)) ;
figure(1)
trisurf(tri,p(:,1),p(:,2),z)
view(2)
shading interp
% Plot as structured grid
xi = linspace(min(x),max(x),300) ;
yi = linspace(min(y),max(y),300) ;
[X,Y] = meshgrid(xi,yi) ;
Z = griddata(x,y,z,X,Y) ;
figure(2)
pcolor(X,Y,Z) ;
shading interp
  1 个评论
BERNARDO CHIARAVALLI
BERNARDO CHIARAVALLI about 2 hours 前
Than you.
I have some questions to ask. I'm sorry but I'm not an enough advance matlab user and it is not completely clear to me the pouropese of the scrip.
taking in imput the coordinates of the 3d points, they have been triangulated in each plane with
delaunayTriangulation(x,y)
my array is made by x,y points disposed on a plane wich are repeated on the z axis (like in the figure).
The coordinates that come from this interpolation are stored in the array named 'Tri', wich is used in the 'trisurf' function, this function create a surface right?
'shading interp' create a colour map in function of the z value.
I would like to know if it is possible to extend your script to interpolate a volume, creating a map like the one in this picture, but wich is continous. I have builted it following the Answer of Jacob Mathew, with a scatter3 plot, adding a column attribute of 0 and 1 to create a temathism for the point.
thank you again for your time

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

标签

产品


版本

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by