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!