24 三维等高线 contour3D
24 三维等高线 contour3D
用途
把等高线立在三维空间里,看梯度变化。
示例(5 张)
24-1 电场强度的三维等高线

24-2 温度场的三维等高线

24-3 电机效率 MAP 的三维等高线

24-4 地电位分布的三维等高线

24-5 铁心损耗分布的三维等高线

代码
以下 5 个函数取自 code/第四批_三维扩展261107.py,直接调用即可出图。样式(宋体 + Times、10 磅、刻度朝内四边、留白自检)由 code/公共配置261107.py 的 setup_cn_style() 和 save() 统一提供,本节不再重复。
# 摘自 code/第四批_三维扩展261107.py
def c3_01():
"""电场强度的三维等高线。"""
fig, ax = new_fig3d(left=0.13)
x = np.linspace(-1, 1, 60)
y = np.linspace(-1, 1, 60)
X, Y = np.meshgrid(x, y)
Z = 40 * np.exp(-(X ** 2 + Y ** 2) / 0.28) + 6
ax.contour3D(X, Y, Z, levels=12, cmap=CMAP_SEQ, linewidths=0.7)
ax.set_xlabel("横向位置 " + IT["x"] + " / m", labelpad=2)
ax.set_ylabel("纵向位置 " + IT["y"] + " / m", labelpad=2)
ax.set_zlabel("场强 " + IT["E"] + " / (kV/m)", labelpad=2)
ax.view_init(elev=28, azim=-130)
save(fig, "24_三维等高线", "24_三维等高线_电场三维等高线")
def c3_02():
"""温度场的三维等高线。"""
fig, ax = new_fig3d(left=0.13)
x = np.linspace(0, 1.4, 60)
y = np.linspace(0, 1.1, 55)
X, Y = np.meshgrid(x, y)
Z = 30 + 26 * np.exp(-((X - 0.55) / 0.30) ** 2 - ((Y - 0.5) / 0.34) ** 2) + 6 * Y
ax.contour3D(X, Y, Z, levels=14, cmap=CMAP_SEQ, linewidths=0.7)
ax.set_xlabel("柜宽 " + IT["x"] + " / m", labelpad=2)
ax.set_ylabel("柜高 " + IT["y"] + " / m", labelpad=2)
ax.set_zlabel("温度 " + IT["T"] + " / °C", labelpad=2)
ax.view_init(elev=27, azim=-124)
save(fig, "24_三维等高线", "24_三维等高线_温度三维等高线")
def c3_03():
"""电机效率 MAP 的三维等高线。"""
fig, ax = new_fig3d(left=0.13)
n = np.linspace(600, 3000, 60)
tq = np.linspace(0, 120, 60)
N, T = np.meshgrid(n, tq)
Z = 94.5 - 8.0 * ((T - 62) / 90) ** 2 - 3.4 * ((N - 2100) / 1500) ** 2
ax.contour3D(N, T, Z, levels=12, cmap=CMAP_SEQ, linewidths=0.7)
ax.set_xlabel("转速 " + IT["n"] + " / (r/min)", labelpad=2)
ax.set_ylabel("转矩 " + IT["T"] + " / (N·m)", labelpad=2)
ax.set_zlabel("效率 " + IT["eta"] + " / %", labelpad=2)
ax.view_init(elev=26, azim=-128)
save(fig, "24_三维等高线", "24_三维等高线_效率三维等高线")
def c3_04():
"""地电位分布的三维等高线。"""
fig, ax = new_fig3d(left=0.13)
x = np.linspace(-30, 30, 60)
y = np.linspace(-30, 30, 60)
X, Y = np.meshgrid(x, y)
Z = np.zeros_like(X)
for gx, gy, k in [(-8, -6, 1.0), (8, -6, 0.85), (0, 8, 0.92)]:
Z += k / np.sqrt((X - gx) ** 2 + (Y - gy) ** 2 + 1.2) * 62
ax.contour3D(X, Y, Z, levels=14, cmap=CMAP_SEQ, linewidths=0.7)
ax.set_xlabel("东向距离 " + IT["x"] + " / m", labelpad=2)
ax.set_ylabel("北向距离 " + IT["y"] + " / m", labelpad=2)
ax.set_zlabel("电位 " + IT["U"] + " / V", labelpad=2)
ax.view_init(elev=30, azim=-125)
save(fig, "24_三维等高线", "24_三维等高线_地电位三维等高线")
def c3_05():
"""铁心损耗分布的三维等高线。"""
fig, ax = new_fig3d(left=0.13)
x = np.linspace(0, 200, 60)
y = np.linspace(0, 160, 55)
X, Y = np.meshgrid(x, y)
Z = 2.1 + 1.4 * np.sin(X / 42 + 0.6) * np.cos(Y / 38) \
+ 0.8 * np.exp(-((X - 100) / 70) ** 2 - ((Y - 80) / 56) ** 2)
ax.contour3D(X, Y, Z, levels=12, cmap=CMAP_SEQ, linewidths=0.7)
ax.set_xlabel("铁心长度 " + IT["x"] + " / mm", labelpad=2)
ax.set_ylabel("铁心高度 " + IT["y"] + " / mm", labelpad=2)
ax.set_zlabel("单位损耗 / (W/kg)", labelpad=2)
ax.view_init(elev=28, azim=-126)
save(fig, "24_三维等高线", "24_三维等高线_铁损三维等高线")
说明
- 图片尺寸 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
- 图内不放标题,图题由本文件的二级/三级标题承担。
- 数据为贴近广东实际量级的仿真算例,随机种子固定,重跑结果一致。

浙公网安备 33010602011771号