26 体素图 voxels
26 体素图 voxels
用途
三维占据或标量场的方块表示,适合机柜、模组的温度分布。
示例(5 张)
26-1 变压器三维温升体素分布

26-2 开关柜内部热点体素

26-3 接地网周围电流密度体素

26-4 电缆隧道通风温度体素

26-5 电池模组电芯温度体素分布

代码
以下 5 个函数取自 code/第四批_三维扩展261107.py,直接调用即可出图。样式(宋体 + Times、10 磅、刻度朝内四边、留白自检)由 code/公共配置261107.py 的 setup_cn_style() 和 save() 统一提供,本节不再重复。
# 摘自 code/第四批_三维扩展261107.py
def vx_01():
"""变压器三维温升体素分布。"""
fig, ax = new_fig3d(right=0.86, left=0.21)
g = 12
x, y, z = np.indices((g, g, g))
cx, cy, cz = g / 2, g / 2, g / 2
r = np.sqrt((x - cx) ** 2 + (y - cy) ** 2 + (z - cz) ** 2)
dT = 65 * np.exp(-(r / 5.2) ** 2) + 18
v = dT > 48
nm = Normalize(dT.min(), dT.max())
fc = CMAP_SEQ(nm(dT))
fc[..., 3] = 0.62
ax.voxels(v, facecolors=fc, edgecolor="none", linewidth=0, shade=False)
ax.set_xlabel("长度方向", labelpad=2)
ax.set_ylabel("宽度方向", labelpad=2)
ax.set_zlabel("高度方向", labelpad=2)
ax.view_init(elev=26, azim=-125)
_k3m(fig, ax, nm, "温升 Δ" + IT["T"] + " / K")
save(fig, "26_体素图", "26_体素图_变压器温升体素")
def vx_02():
"""开关柜内部热点体素。"""
fig, ax = new_fig3d(right=0.86, left=0.21)
g = 12
x, y, z = np.indices((g, g, g))
dT = (58 * np.exp(-((x - 5) ** 2 + (y - 6) ** 2 + (z - 4) ** 2) / 6.0)
+ 34 * np.exp(-((x - 8) ** 2 + (y - 3) ** 2 + (z - 7) ** 2) / 5.0) + 20)
nm = Normalize(dT.min(), dT.max())
fc = CMAP_SEQ(nm(dT))
fc[..., 3] = 0.62
ax.voxels(dT > 42, facecolors=fc, edgecolor="none", linewidth=0, shade=False)
ax.set_xlabel("柜宽", labelpad=2)
ax.set_ylabel("柜深", labelpad=2)
ax.set_zlabel("柜高", labelpad=2)
ax.view_init(elev=27, azim=-122)
_k3m(fig, ax, nm, "温升 Δ" + IT["T"] + " / K")
save(fig, "26_体素图", "26_体素图_开关柜热点体素")
def vx_03():
"""接地网周围电流密度体素。"""
fig, ax = new_fig3d(right=0.86, left=0.21)
g = 12
x, y, z = np.indices((g, g, g))
r = np.sqrt((x - 6) ** 2 + (y - 6) ** 2 + 0.6 * (z - 1) ** 2)
J = 22 / (r + 1.0) ** 1.6
nm = Normalize(J.min(), J.max())
fc = CMAP_SEQ(nm(J))
fc[..., 3] = 0.62
ax.voxels(J > 3.2, facecolors=fc, edgecolor="none", linewidth=0, shade=False)
ax.set_xlabel("东向距离", labelpad=2)
ax.set_ylabel("北向距离", labelpad=2)
ax.set_zlabel("深度方向", labelpad=2)
ax.view_init(elev=24, azim=-128)
_k3m(fig, ax, nm, "电流密度 / (A/m²)")
save(fig, "26_体素图", "26_体素图_接地网电流密度")
def vx_04():
"""电缆隧道通风温度体素。"""
fig, ax = new_fig3d(right=0.86, left=0.21)
nx, ny, nz = 16, 6, 6
x, y, z = np.indices((nx, ny, nz))
T = 28 + 16 * np.exp(-((y - 2.5) ** 2 + (z - 2.5) ** 2) / 3.2) + 0.45 * x
nm = Normalize(T.min(), T.max())
fc = CMAP_SEQ(nm(T))
fc[..., 3] = 0.62
ax.voxels(T > 38, facecolors=fc, edgecolor="none", linewidth=0, shade=False)
ax.set_xlabel("隧道长度方向", labelpad=2)
ax.set_ylabel("横向", labelpad=2)
ax.set_zlabel("高度", labelpad=2)
ax.view_init(elev=22, azim=-122)
_k3m(fig, ax, nm, "温度 " + IT["T"] + " / °C")
save(fig, "26_体素图", "26_体素图_电缆隧道温度")
def vx_05():
"""电池模组电芯温度体素分布。"""
fig, ax = new_fig3d(right=0.86, left=0.21)
nx, ny, nz = 8, 5, 3
x, y, z = np.indices((nx, ny, nz))
T = 26 + 12 * np.exp(-((x - 3.5) ** 2 + (y - 2) ** 2) / 6.0) + 1.8 * z
nm = Normalize(T.min(), T.max())
fc = CMAP_SEQ(nm(T))
fc[..., 3] = 0.62
ax.voxels(T > 33, facecolors=fc, edgecolor="none", linewidth=0, shade=False)
ax.set_xlabel("电芯列", labelpad=2)
ax.set_ylabel("电芯行", labelpad=2)
ax.set_zlabel("模组层", labelpad=2)
ax.view_init(elev=25, azim=-124)
_k3m(fig, ax, nm, "温度 " + IT["T"] + " / °C")
save(fig, "26_体素图", "26_体素图_电池模组温度")
说明
- 图片尺寸 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
- 图内不放标题,图题由本文件的二级/三级标题承担。
- 数据为贴近广东实际量级的仿真算例,随机种子固定,重跑结果一致。

浙公网安备 33010602011771号