22 三维线框 wireframe
22 三维线框 wireframe
用途
只画网格线不填充,透视感强,适合展示曲面骨架。
示例(5 张)
22-1 电机效率 MAP 的三维线框

22-2 光伏组件 P-V 特性线框

22-3 母线室温度分布线框

22-4 LC 滤波器幅频响应线框

22-5 锂电池放电容量线框

代码
以下 5 个函数取自 code/第四批_三维扩展261107.py,直接调用即可出图。样式(宋体 + Times、10 磅、刻度朝内四边、留白自检)由 code/公共配置261107.py 的 setup_cn_style() 和 save() 统一提供,本节不再重复。
# 摘自 code/第四批_三维扩展261107.py
def wf_01():
"""电机效率 MAP 的三维线框。"""
fig, ax = new_fig3d(left=0.13)
n = np.linspace(600, 3000, 22)
tq = np.linspace(0, 120, 22)
N, T = np.meshgrid(n, tq)
Z = 94.5 - 8.0 * ((T - 62) / 90) ** 2 - 3.4 * ((N - 2100) / 1500) ** 2
ax.plot_wireframe(N, T, Z, rstride=2, cstride=2, color=C1, linewidth=0.4)
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, "22_三维线框", "22_三维线框_电机效率MAP")
def wf_02():
"""光伏组件 P-V 特性线框。"""
fig, ax = new_fig3d(left=0.13)
u = np.linspace(0, 42, 22)
g = np.linspace(0.2, 1.0, 16)
U, G = np.meshgrid(u, g)
P = np.clip(U * 9.8 * G * (1 - np.exp((U - 42 * (0.86 + 0.14 * G)) / 3.2)), 0, None)
ax.plot_wireframe(U, G * 1000, P, rstride=1, cstride=1, color=C3, linewidth=0.4)
ax.set_xlabel("电压 " + IT["U"] + " / V", labelpad=2)
ax.set_ylabel("辐照度 " + IT["G"] + " / (W/m²)", labelpad=2)
ax.set_zlabel("功率 " + IT["P"] + " / W", labelpad=2)
ax.view_init(elev=24, azim=-136)
save(fig, "22_三维线框", "22_三维线框_光伏P-V特性")
def wf_03():
"""母线室温度分布线框。"""
fig, ax = new_fig3d(left=0.13)
x = np.linspace(0, 1.4, 20)
y = np.linspace(0, 1.1, 18)
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.plot_wireframe(X, Y, Z, rstride=2, cstride=2, color=C1, linewidth=0.4)
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=28, azim=-122)
save(fig, "22_三维线框", "22_三维线框_母线室温度")
def wf_04():
"""LC 滤波器幅频响应线框。"""
fig, ax = new_fig3d(left=0.13)
f = np.logspace(1, 4.3, 26)
q = np.linspace(0.5, 8, 16)
F, Q = np.meshgrid(f, q)
H = 1 / np.sqrt((1 - (F / 800) ** 2) ** 2 + (F / (800 * Q)) ** 2)
Z = 20 * np.log10(np.clip(H, 1e-4, None))
ax.plot_wireframe(np.log10(F), Q, Z, rstride=1, cstride=1, color=C3,
linewidth=0.4)
ax.set_xlabel("lg(" + IT["f"] + " / Hz)", labelpad=2)
ax.set_ylabel("品质因数 " + IT["Q"], labelpad=2)
ax.set_zlabel("幅值 / dB", labelpad=2)
ax.view_init(elev=24, azim=-132)
save(fig, "22_三维线框", "22_三维线框_滤波器频响")
def wf_05():
"""锂电池放电容量线框。"""
fig, ax = new_fig3d(left=0.13)
c = np.linspace(0.2, 3.0, 20)
t = np.linspace(-20, 45, 16)
Cc, T = np.meshgrid(c, t)
cap = 100 * (1 - 0.11 * (Cc - 0.2) ** 1.25) * (1 - 0.0042 * np.abs(T - 25) ** 1.4)
ax.plot_wireframe(Cc, T, np.clip(cap, 45, 102), rstride=1, cstride=1,
color=C1, linewidth=0.4)
ax.set_xlabel("放电倍率 " + IT["C"], labelpad=2)
ax.set_ylabel("温度 " + IT["T"] + " / °C", labelpad=2)
ax.set_zlabel("可用容量 / %", labelpad=2)
ax.view_init(elev=25, azim=-130)
save(fig, "22_三维线框", "22_三维线框_电池容量特性")
说明
- 图片尺寸 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
- 图内不放标题,图题由本文件的二级/三级标题承担。
- 数据为贴近广东实际量级的仿真算例,随机种子固定,重跑结果一致。

浙公网安备 33010602011771号