4. 盐度与密度剖面联合可视化

在海洋水文分析中,温度、盐度与密度三者并不是彼此独立的观测量。海水密度主要由温度和盐度共同决定,而密度又是判断水团层结稳定性、垂向混合与环流结构的关键参数。本节要完成的任务,是把同一组温盐剖面数据同时呈现为两种互补的视图:一张以盐度为横轴、温度为纵轴的 T-S 点聚图,用来识别水团及其混合关系;一张以位密为横轴的垂向剖面图,用来观察密度随深度的层结变化。两者结合,才能既看清"水团是什么",又看清"水团如何分层"。

为什么必须用 gsw 而不是手算密度

很多初学者会直接用经验公式从温度、盐度估算密度,但在现代海洋观测中,更规范的做法是使用 TEOS-10 标准下的 gsw(Gibbs SeaWater)库。原因在于:现场测得的电导率对应的是实用盐度 SP,而密度计算需要的是绝对盐度 SA;同时,位密(potential density)需要指定参考压力,以消除压缩性对密度的影响。gsw 提供了从电导率到实用盐度、再到绝对盐度、最后到不同参考压力下位密度的完整链条,避免了单位与定义混用带来的系统偏差。

典型的数据准备与计算流程如下(示例参数为合理假设,非实测结果):

import numpy as np
import gsw
import matplotlib.pyplot as plt

# 假设已有剖面数组:depth(m), t90(℃), sp(实用盐度), lon, lat
depth = np.array([0, 10, 25, 50, 75, 100, 150, 200])
t90   = np.array([18.2, 17.9, 17.1, 15.6, 13.8, 11.9, 9.4, 8.1])
sp    = np.array([34.10, 34.15, 34.28, 34.45, 34.62, 34.71, 34.78, 34.80])
lon, lat = 118.5, 22.0

# 1) 由实用盐度换算绝对盐度
sa = gsw.SA_from_SP(sp, depth, lon, lat)

# 2) 由温度、绝对盐度、压力计算位密(参考压力 0 dbar)
p = gsw.p_from_z(-depth, lat)          # 深度转压力
ct = gsw.CT_from_t(sa, t90, p)         # 保守温度
sigma0 = gsw.sigma0(sa, ct)            # 位密异常 kg/m³

# 3) 计算 T-S 图上的等密线背景
sp_grid = np.linspace(33.5, 35.2, 120)
t_grid  = np.linspace(5, 20, 120)
SP, T = np.meshgrid(sp_grid, t_grid)
SA_g = gsw.SA_from_SP(SP, 0, lon, lat)
CT_g = gsw.CT_from_t(SA_g, T, 0)
SIG  = gsw.sigma0(SA_g, CT_g)

这里有几个容易出错的细节。第一,gsw.p_from_z 的输入深度应为负值(海面为 0,向下为负),这是 TEOS-10 的符号约定,全文与图示都遵循"深度向下为正、压力随深度增大"的展示习惯,但调用函数时深度取负。第二,位密应使用保守温度 CT 而非现场温度 t90 计算,否则在深层会引入偏差。第三,等密线背景要用同一套 gsw 函数生成,保证与散点处于同一坐标系。

T-S 点聚图:让水团"站队"

T-S 图的价值在于:同一水团在温盐关系上往往表现为一条较紧凑的曲线或点簇,不同水团则占据不同区域;两个水团混合时,混合点大致落在连接两者的直线上。因此,把剖面点按深度着色画在 T-S 平面上,再叠加等密线,就能同时读出三件事:水团的位置、混合的趋势、以及密度沿温盐变化的梯度方向。

绘制时,用 plt.contour 画等密线并标注 sigma0 值,用 scatter 画剖面点并以深度作为颜色映射,最后用 colorbar 说明颜色含义。观察要点是:若散点沿某条等密线密集排列,说明该段水体接近中性层结;若散点跨越等密线,则意味着存在密度变化,可能对应跃层。下图展示了这一联合视图的结构关系。

T-S 点聚图与位密剖面的联合判读 T-S 点聚图(等密线背景) 实用盐度 SP 温度 t90 (℃) σ₀=25.0 σ₀=25.8 σ₀=26.6 混合趋势 ● 浅层 ● 深层 位密垂向剖面 σ₀ 位密 σ₀ (kg/m³) 深度 (m) 0 50 100 150 200 密度跃层 σ₀ 快速增大 左图判水团与混合,右图判层结与跃层;两图共用同一组 gsw 计算结果

密度剖面的读法与常见判读

位密剖面通常把深度画在纵轴并向下增大,位密画在横轴。曲线随深度向右偏移,说明密度随深度增大,水体稳定层结;若某一段曲线近乎竖直,说明该段密度变化很小,接近均匀层;若曲线在某深度区间快速右移,则对应密度跃层,往往是温跃层或盐跃层的综合反映。把 T-S 图与密度剖面并置后,可以交叉验证:T-S 图上散点跨越等密线的区段,应当与密度剖面上曲线快速偏移的深度区间大致对应。如果两者对不上,就要回头检查深度、压力、盐度单位或参考压力是否一致。

实际绘图时,建议把两张子图放在同一画布上,用 plt.subplots(1, 2) 布局,并让 T-S 图的颜色映射与剖面图的深度刻度使用同一色标,便于读者把点与层对应起来。等密线标签用 clabel 自动标注,避免手工摆放。若剖面点较多,可对散点做轻微透明处理(alpha=0.7),防止重叠遮挡。

判读口诀:T-S 图看"团"与"线",密度剖面看"层"与"跃"。两图同源同标,结论才能相互支撑。
注意:示例中的温盐数值仅用于演示绘图与计算流程,不代表任何真实海区观测结果。实际分析时应使用经过质量控制的 CTD 数据,并核对经纬度、压力基准与盐度定义。

完成上述两张图后,一份可复用的成果是"联合剖面图 + 关键判读记录"。记录中至少应包含:数据来源与经纬度、使用的参考压力、位密范围、疑似跃层深度区间,以及 T-S 图上识别出的主要水团或混合趋势。这样,图形就不只是好看,而是能支撑后续的水团划分与层结分析。