MATLAB Answers

Draw 3D plot from 2D plot with discrete data points

5 views (last 30 days)
autumn
autumn on 19 Jul 2021
Commented: Star Strider on 23 Jul 2021
Hi All,
I am trying to draw 3D plot from a 2D line graph (in x/z-axis).
I have discrete data points in x and z-axis like below graph. I want to roate it around z-axis. Therefore, I used 'surf'
Here is what I obtained so far.
filename = 'filename.xlsx';
x(:,:)= xlsread(filename);
r = (x(4:49,12))'; z = (x(4:49,13))'; %% data from excel
for i = 1:46;
theta = linspace(0,2*pi,200); %% to rotate around z-axis
X = r(i)*cos(theta);
Y = r(i)*sin(theta);
Z = z(i)*ones(length(Y), length(X));
plot(X,Y); %% just for checking X and Y are on circles
surf(X,Y,Z); %% wanted to obtain a smooth mountain with an empty center.
if i < 46;
hold on;
i = i+1;
end;
end
xlabel('x'); ylabel('y');zlabel('z');
hold off
shading interp
colorbar
and this is the result..
The profile has to be very smooth, no sharp edges on the boundary. However, it has four edges. Also, when x<450, there is be no data points in z-axis.. but it shows very flat top surface (yellow). I think I need to assign z-values at the correct x and y coordinates. However, I am not sure how to fix this.
Please help me to resolve this issue.
Thanks a lot for your comments and time in advance!

Accepted Answer

Star Strider
Star Strider on 20 Jul 2021
Without the Excel file, I experimented to create an approsimately equal curve. I then used it as the radiuc argument to the cylinder fucntion to create the surf plot.
x = linspace(460, 700, 50);
z = 1E-194*exp(-0.025*x+460) + 1.5;
figure
plot(x, z)
title('Radius Curve')
[X,Y,Z] = cylinder(z,50);
X = X .* x(:)/2;
Y = Y .* x(:)/2;
Z = Z*max(z) + min(z);
figure
surfc(X, Y, Z, 'EdgeColor','none')
colorbar
zlim([0 max(z)])
That likely approximates what appears to have been requested. Make appropriate changes so it works correctly with the actual data.
.
  8 Comments

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by