问题描述:
画好的温盐剖面图如下:
绘制剖面图的难点在于画图时需要将纵轴翻转180°
完整代码 :
clc;close all;clear all
%%数据读取
filename = 'D:\MATLAB_DATA\DATA\nc_T_S_profile\gtspp_49748043_b3_101.nc'
ncdisp(filename)
T = ncread(filename,'temperature');
S = ncread(filename,'salinity');
depth = ncread(filename,'z');
lon = ncread(filename,'longitude');
lat = ncread(filename,'latitude');
%%画温度—深度剖面图
figure(1);
set(0,'defaultfigurecolor','w');
T = T(:);
plot(T,depth,'r','LineWidth',2);
axis([0 18 0 2000])
grid on;
set(gca,'xaxislocation','top','YDir','reverse','gridlinestyle','--','gridalph',0.8);
set(gca,'XTick',[0:1:18],'YTick',[0:200:2000]);
xlabel('Temperature(℃)');
ylabel('Depth(m)');
text(10,150,'Thermocline','fontsize',18);
title('Temperature-Depth profile','position',[9, 2150],'fontsize',20);
%%画温跃层图
figure(2);
set(0,'defaultfigurecolor','w');
T = T(:);
plot(T(find(depth <= 200)),depth(find(depth <= 200)),'r','LineWidth',2);
grid on;
axis([0 18 0 200]);
set(gca,'xaxislocation','top','YDir','reverse','fontsize',14,'gridlinestyle','--','gridalph',0.8);
set(gca,'XTick',[0:1:18],'YTick',[0:20:200]);
xlabel('Temperature(℃)');
ylabel('Depth(m)');
text(8,70,'Thermocline','fontsize',18);
%%画盐度—深度剖面图
figure(3);
set(0,'defaultfigurecolor','w');
S = S(:);
plot(S,depth,'r','LineWidth',2);
grid on;
axis([34 35 0 2000]);
set(gca,'xaxislocation','top','YDir','reverse','fontsize',14,'gridlinestyle','--','gridalph',0.8);
set(gca,'XTick',[34:0.05:35],'YTick',[0:200:2000]);
xlabel('Salinity(unitless)');
ylabel('Depth(m)');
title('Salinity-Depth profile','position',[34.5, 2150],'fontsize',20);
剖面绘制:
以绘制温度剖面图为例,读取完.nc文件中的数据后,发现温度为三维矩阵,超出了plot()函数的规定维度。
因此使用T = T(:)将三维矩阵,降维成二维矩阵。
以温度为横坐标,深度为纵坐标绘制曲线;设置曲线颜色为红色,线宽为2
plot(T,depth,'r','LineWidth',2);
调整x轴的上下限,使剖面曲线位于中部
axis([0 18 0 2000])
打开网格,把x轴移动到上部,把y轴翻转,设置x、y轴的刻度,设置网格的样式
grid on;
set(gca,'xaxislocation','top','YDir','reverse');
set(gca,'XTick',[0:1:18],'YTick',[0:200:2000],'gridlinestyle','--','gridalph',0.8);
此时剖面曲线已经颇具雏形了,还缺少标注和图题
xlabel('Temperature(℃)');
ylabel('Depth(m)');
title('Temperature-Depth profile','position',[9, 2150],'fontsize',20);
最后,通过观察剖面曲线,可以很明显地看到存在一个温跃层,因此想将其标注出来。注意,标注文字的位置是按x、y轴坐标控制的。例如下面代码的10,150表示插入文字的位置在x轴数值‘10’处、y轴数值‘150’处。 文章来源:https://www.toymoban.com/news/detail-742926.html
text(10,150,'Thermocline','fontsize',18);
文章来源地址https://www.toymoban.com/news/detail-742926.html
到了这里,关于MATLAB画温盐剖面图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!