绘制3D海水温盐密度曲面(matplotlib)

 海水密度数学模型与上次相同,但本次采用3D绘图,添加颜色渲染

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm


# 导入公式
def A(t):
    a = 8.24493 * 10 ** -1 - 4.0899 * 10 ** -3 * t + 7.6438 * 10 ** -5 * t ** 2
    - 8.2467 * 10 ** -7 * t ** 3 + 5.3875 * 10 ** -9 * t ** 4
    return a


def B(t):
    b = -5.72466 * 10 ** -3 + 1.00227 * 10 ** -4 * t - 1.6546 * 10 ** -6 * t ** 2
    return b


C = 4.8314 * 10 ** -4


def pw(t):
    p = 999.842594 + 6.793952 * 10 ** -2 * t - 9.095290 * 10 ** -3 * t ** 2
    + 1.001685 * 10 ** -4 * t ** 3 - 1.120083 * 10 ** -6 * t ** 4 + 6.536332 * 10 ** -9 * t ** 5
    return p


# 标准大气压下,海压为0
def density(t, S):
    d = pw(t) + A(t) * S + B(t) * S ** (3 / 2) + C * S ** 2
    return d

# 生成数据
t_values = np.linspace(-2, 40, 43)
s_values = np.linspace(0, 42, 43)
t, s = np.meshgrid(t_values, s_values)  # 网格化
d = density(t, s)
# 添加颜色映射
cmap = cm.get_cmap('Blues')
# 可视化
fig = plt.figure(figsize=(8, 6))
ax = plt.subplot(111, projection='3d')  # 创建一个3d项目
surf = ax.plot_surface(t, s, d, rstride=2, cstride=2, cmap=cmap)  # rstride 数组行距 cstride 数组列距

ax.set_xlabel('Temperature')
ax.set_ylabel('Salty')

plt.colorbar(surf, pad=0.1, label='Density')  # pad参数设置颜色条与子图间距

plt.show()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值