# how to convert a 3D surface into a 2D contour?

18 views (last 30 days)
Ramina on 27 Jan 2024
Hi,
I have a 3D surface(download: https://uploadkon.ir/uploads/9ced27_24input.zip) and I want to convert it into a 2D contour like the image below. but I dont know how.
ps: the colorbar in the 2D plot shows the variation of y-axis in the 3D plot.
Torsten on 27 Jan 2024
I'd just change the view to be frontal on the xz-plane when plotting the surface :-)

Sulaymon Eshkabilov on 27 Jan 2024
This is how it can be done:
H = openfig('ds2.fig'); % This is the extracted plot figure
h = findobj(gca, 'Type', 'surface');
X = get(h, 'XData'); % Extract XData
Y = get(h, 'YData'); % Extract YData
Z = get(h, 'ZData'); % Extract YData
figure
plot(X, Z)
plot(X, Z)
xlabel("X")
ylabel("Z")
grid on
Ramina on 28 Jan 2024
Edited: Ramina on 28 Jan 2024
Hi, thank you for the time you took to answer my question.
I want to show the collors (like the 2D plot in my question) as well to show the variation of y-axis. Can you help me to do that as well?
Here is the code I wanted to use, but it shows this error:
Error using contourf
Z must be at least a 2x2 matrix.
Error in contour_2D (line 4)
[~, hc] = contourf(h.XData, h.ZData, h.YData);
h = findobj(gcf,'type','surface')
figure
[~, hc] = contourf(h.XData, h.ZData, h.YData);
h2=colorbar;

Sulaymon Eshkabilov on 28 Jan 2024
Note that it is clear from the colorbar scale (Figure 2 in your question) that there must be another operation before obtaining the plot (Figure 2 in your question) that is missing in your question.
Anyhow, here is another way of getting a similar plot.
H = openfig('ds2.fig'); % This is the extracted plot figure
view(360,0)
xlabel("X")
zlabel("Z")
grid on
xlim([0, 2])