MATLAB画温盐剖面图

该文章详细介绍了如何使用MATLAB从.nc文件中读取温度和盐度数据,绘制温盐剖面图。首先,通过ncread函数读取数据,然后将三维矩阵降维以适应plot函数。接着,绘制温度-深度剖面图,设置图形属性如轴限制、网格线、标签和标题,并标注出温跃层位置。整个过程展示了MATLAB在海洋学数据可视化中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

 

画好的温盐剖面图如下:

 

绘制剖面图的难点在于画图时需要将纵轴翻转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’处。 

text(10,150,'Thermocline','fontsize',18);

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玛特莱布DUMMY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值