海水密度数学模型与上次相同,但本次采用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()