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。
  • 图内不放标题,图题由本文件的二级/三级标题承担。
  • 数据为贴近广东实际量级的仿真算例,随机种子固定,重跑结果一致。
posted @ 2026-11-07 08:36  小青蛙电气  阅读(3)  评论(0)    收藏  举报