需要连续展示垂向结构,截取任意位置的剖面共同展示
例如需做此类图件:
以该图为例,每条剖面的 surf()函数 内参数 Y 和 Z 坐标值是固定的,只有 X 发生变化。
因此,在绘制多条剖面在同一坐标系内时,只需修改对应剖面位置的X即可。
绘制沿其他方向的剖面与此类似,即修改surf()函数对应的X、Y、Z参数即可。
figure(3); %图窗
[Y,Z] = meshgrid(21:0.25:27,-150:10:-10);
X1 = ones(Nx,Ny)*104;
C1 = Ydata1;
h1 = surf(X1,Y,Z,C1)
set(h1,'FaceColor','interp','EdgeColor','none');
colorbar
hold on
X2 = ones(Nx,Ny)*105;
C2 = Ydata2;
h2 = surf(X2,Y,Z,C2)
set(h2,'FaceColor','interp','EdgeColor','none');
colorbar
hold on
axis([104 113 21 27 -150 0]);
caxis([3.5 4.5]);
colormap(flipud(jet));
set(gca,'FontName','Times New Roman','XTickLabel',...
{'104°E','105°E','106°E','107°E','108°E','109°E','110°E','111°E','112°E','113°E'},'YTickLabel',...
{'21°N','22°N','23°N','24°N','25°N','26°N','27°N'},'ZTickLabel',...
{'150km','100km','50km','0km','100km','50km','0km'},...
'FontSize',11);
c = colorbar;
c.Label.String = 'velocity(km/s)';
set(c,'fontsize',12);
此处仅说明surf()函数参数注意事项,其他可通过matlab help功能查询
surf(X2,Y,Z,C2)
matlab中surf函数可单独使用,前置句柄是为了后续方便设置剖面显示参数。
【参数设置】
注意保持X、Y、Z、C 数组大小一致 即可。
X、Y、Z 分别代表剖面数据在各分量上的位置信息
C 代表剖面对应点的数值信息
以上图为例,X、Y、Z、C 数组中对应位置的值代表该点的横坐标、纵坐标、深度值以及对应的波速值。
set(h1,'FaceColor','interp','EdgeColor','none');
set()函数 设置三维剖面的显示细节
axis([104 113 21 27 -150 0]);
axis() 函数 给定坐标系范围
caxis([3.5 4.5]);
caxis() 函数 给定色标范围
colormap(flipud(jet));
jet 色标名称
colormap() 使用某色标
flipud() 将色标翻转