How to obtain a section from a surf plot
19 次查看(过去 30 天)
显示 更早的评论
Dear all,
I have a surface plot that represents the bathymetry of a given surface:
x=longitute;
y=latitude;
z=depth;
Now, I want to obtain a section that cuts this surface at the latitude (37.9º) in order to obtain something like the following figure:
How can I do this?
Thanks in advance.
2 个评论
DGM
2021-6-30
编辑:DGM
2021-6-30
The example image isn't a section. It simply appears to be the same surface from a 2D view, like
shading flat % get rid of edges
view([0 -1 0]) % set 2D view looking toward +y
Either that, or it represents some sort of difference information.
If you actually want a section, it will just be a line. If the query point where you want to make the section belongs to the x,y points you're using, then all you have to do is extract the corresponding vector from the Z data. If it lies between the plotted points, then you'll have to interpolate.
采纳的回答
KSSV
2021-7-1
Check this demo example, may be useful.
[X,Y,Z] = peaks(100) ;
surf(X,Y,Z)
xi = unique(X(:)) ;
val = 0; dx = 10^-3 ; w = 10 ;
yi = linspace(val-dx,val+dx,w) ;
[Xi,Yi] = meshgrid(xi,yi) ;
Zi = interp2(X,Y,Z,Xi,Yi) ;
surf(Xi,Yi,Zi)
4 个评论
DGM
2021-7-1
编辑:DGM
2021-7-1
Or instead of scatter3(), just
plot(xi,zi)
if you don't need the color mapping and want a plain 2D solid line.
or
h = surf([xi(:) xi(:)],[yi(:) yi(:)],[zi(:) zi(:)]);
set(h,'facecolor','none','edgecolor','interp');
set(h,'linewidth',3); % make it fat so it's easier to demonstrate
view([0 -1 0]); % only show 2-D view
colormap(parula);
If you want the solid line with colormapping.
The 2D view enforcement works with scatter3() too.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Surface and Mesh Plots 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!