16 流线图 streamplot

16 流线图 streamplot

用途

场的流线走向,比箭头场更连贯,适合电场、磁场、气流。

示例(5 张)

16-1 双极板间电场的流线分布

双极板间电场的流线分布

16-2 载流导线周围磁场的环形流线

载流导线周围磁场的环形流线

16-3 开关室通风气流的流线分布

开关室通风气流的流线分布

16-4 风电场轮毂高度的气流流线

风电场轮毂高度的气流流线

16-5 接地网附近地表电流密度的流线

接地网附近地表电流密度的流线

代码

以下 5 个函数取自 code/第三批_场与三角网格261107.py,直接调用即可出图。样式(宋体 + Times、10 磅、刻度朝内四边、留白自检)由 code/公共配置261107.py 的 setup_cn_style() 和 save() 统一提供,本节不再重复。

# 摘自 code/第三批_场与三角网格261107.py

def sp_01():
    """双极板间电场的流线分布。"""
    fig, ax = new_fig(left=0.19)
    x = np.linspace(-1, 1, 200)
    y = np.linspace(-1, 1, 200)
    X, Y = np.meshgrid(x, y)
    R1 = np.sqrt((X + 0.45) ** 2 + Y ** 2) + 0.08
    R2 = np.sqrt((X - 0.45) ** 2 + Y ** 2) + 0.08
    Ex = (X + 0.45) / R1 ** 3 - (X - 0.45) / R2 ** 3
    Ey = Y / R1 ** 3 - Y / R2 ** 3
    ax.streamplot(x, y, Ex, Ey, color=np.hypot(Ex, Ey), cmap=CMAP_SEQ,
                  density=1.3, linewidth=0.7, arrowsize=0.7)
    ax.plot([-0.45, 0.45], [0, 0], "o", ms=5, color=C2)
    ax.set_xlabel("水平位置 " + IT["x"] + " / m")
    ax.set_ylabel("垂直位置 " + IT["y"] + " / m")
    ax.set_aspect("equal")
    save(fig, "16_流线图", "16_流线图_双极板电场流线")

def sp_02():
    """载流导线周围磁场的环形流线。"""
    fig, ax = new_fig(left=0.19)
    x = np.linspace(-0.6, 0.6, 220)
    y = np.linspace(-0.6, 0.6, 220)
    X, Y = np.meshgrid(x, y)
    R2 = X ** 2 + Y ** 2 + 0.004
    Hx = -Y / R2
    Hy = X / R2
    ax.streamplot(x, y, Hx, Hy, color=np.hypot(Hx, Hy), cmap=CMAP_SEQ,
                  density=1.5, linewidth=0.7, arrowsize=0.6)
    ax.plot(0, 0, "o", ms=6, color=C2)
    ax.set_xlabel("水平位置 " + IT["x"] + " / m")
    ax.set_ylabel("垂直位置 " + IT["y"] + " / m")
    ax.set_aspect("equal")
    ax.set_xlim(-0.6, 0.6)
    ax.set_ylim(-0.6, 0.6)
    save(fig, "16_流线图", "16_流线图_载流导线磁场流线")

def sp_03():
    """开关室通风气流的流线分布。"""
    fig, ax = new_fig(left=0.19)
    x = np.linspace(0, 4, 200)
    y = np.linspace(0, 3, 200)
    X, Y = np.meshgrid(x, y)
    U = 1.2 + 0.5 * np.sin(Y / 1.4)
    V = 0.45 * np.sin(X / 1.1) * np.exp(-Y / 2.4)
    ax.streamplot(x, y, U, V, color=np.hypot(U, V), cmap=CMAP_SEQ,
                  density=1.25, linewidth=0.7, arrowsize=0.7)
    ax.set_xlabel("柜长 " + IT["x"] + " / m")
    ax.set_ylabel("柜高 " + IT["y"] + " / m")
    ax.set_xlim(0, 4)
    ax.set_ylim(0, 3)
    save(fig, "16_流线图", "16_流线图_开关室通风流线")

def sp_04():
    """风电场轮毂高度的气流流线。"""
    fig, ax = new_fig(left=0.19)
    x = np.linspace(0, 6, 200)
    y = np.linspace(0, 4, 200)
    X, Y = np.meshgrid(x, y)
    U = 9.2 + 1.8 * np.cos(Y / 1.5) * np.sin(X / 2.6)
    V = 1.6 * np.sin(X / 1.8) * np.cos(Y / 1.2)
    ax.streamplot(x, y, U, V, color=np.hypot(U, V), cmap=CMAP_SEQ,
                  density=1.4, linewidth=0.7, arrowsize=0.7)
    ax.set_xlabel("东向距离 " + IT["x"] + " / km")
    ax.set_ylabel("北向距离 " + IT["y"] + " / km")
    ax.set_xlim(0, 6)
    ax.set_ylim(0, 4)
    save(fig, "16_流线图", "16_流线图_风电场流线")

def sp_05():
    """接地网附近地表电流密度的流线。"""
    fig, ax = new_fig(left=0.19)
    x = np.linspace(-20, 20, 200)
    y = np.linspace(-20, 20, 200)
    X, Y = np.meshgrid(x, y)
    R = np.sqrt(X ** 2 + Y ** 2) + 1.5
    Jx = X / R ** 2 * 240
    Jy = Y / R ** 2 * 240
    ax.streamplot(x, y, Jx, Jy, color=np.hypot(Jx, Jy), cmap=CMAP_SEQ,
                  density=1.3, linewidth=0.7, arrowsize=0.7)
    ax.plot(0, 0, "s", ms=6, color=C2)
    ax.set_xlabel("东向距离 " + IT["x"] + " / m")
    ax.set_ylabel("北向距离 " + IT["y"] + " / m")
    ax.set_aspect("equal")
    save(fig, "16_流线图", "16_流线图_接地网电流流线")

说明

  • 图片尺寸 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
  • 图内不放标题,图题由本文件的二级/三级标题承担。
  • 数据为贴近广东实际量级的仿真算例,随机种子固定,重跑结果一致。
posted @ 2026-11-07 08:35  小青蛙电气  阅读(3)  评论(0)    收藏  举报