15 网格图 pcolormesh
用途
非均匀网格的标量场着色,精度比 pcolor 高,是场分布的主力。
示例(5 张)
15-1 非均匀网格下母线室温度场

15-2 时频能量分布(非均匀频率轴)

15-3 供电分区负荷密度网格图

15-4 风电场风功率密度分布

15-5 绝缘子表面电位分布(不规则极坐标网格映射)

代码
以下 5 个函数取自 code/第三批_面积与场261106.py,直接调用即可出图。版式(宋体 + Times、10 磅、刻度朝内四边、图内无标题、留白自检)由 code/公共配置261106.py 的 setup_cn_style() 与 save() 统一提供。
# 摘自 code/第三批_面积与场261106.py
def pcm_01():
"""非均匀网格下母线室温度场。"""
fig, ax = new_fig(left=0.17, bottom=0.19, right=0.86)
xe = np.concatenate([np.linspace(0, 0.5, 26), np.linspace(0.5, 1.4, 12)[1:]])
ye = np.concatenate([np.linspace(0, 0.4, 20), np.linspace(0.4, 1.1, 10)[1:]])
X, Y = np.meshgrid(xe, ye)
Z = 30 + 26 * np.exp(-((X - 0.55) / 0.28) ** 2) * np.exp(-((Y - 0.5) / 0.32) ** 2) \
+ 6 * Y
m = ax.pcolormesh(X, Y, Z, cmap=CMAP_SEQ, shading="auto", rasterized=True)
ax.set_xlabel("柜宽 " + IT["x"] + " / m")
ax.set_ylabel("柜高 " + IT["y"] + " / m")
_cbar(fig, ax, m, "温度 " + IT["T"] + " / °C")
save(fig, "15_网格图", "15_网格图_非均匀温度场")
def pcm_02():
"""时频能量分布(非均匀频率轴)。"""
fig, ax = new_fig(left=0.17, bottom=0.19, right=0.86)
rng = np.random.default_rng(601)
t = np.linspace(0, 2.0, 60)
f = np.concatenate([np.linspace(20, 100, 20), np.linspace(100, 2000, 40)[1:]])
T, F = np.meshgrid(t, f)
Z = 6 * np.exp(-((F - 150) / 120) ** 2) * (0.6 + 0.4 * np.sin(2 * np.pi * 1.5 * T)) \
+ 4 * np.exp(-((F - 850) / 300) ** 2) * (0.5 + 0.5 * np.cos(2 * np.pi * 3 * T)) \
+ rng.gamma(1.6, 0.35, F.shape)
m = ax.pcolormesh(T, F, Z, cmap=CMAP_SEQ, shading="auto",
norm=LogNorm(vmin=0.3, vmax=12),
rasterized=True)
ax.set_yscale("log")
ax.set_xlabel("时间 " + IT["t"] + " / s")
ax.set_ylabel("频率 " + IT["f"] + " / Hz")
_cbar(fig, ax, m, "能量密度 / (V²/Hz)")
save(fig, "15_网格图", "15_网格图_时频能量分布")
def pcm_03():
"""供电分区负荷密度网格图。"""
fig, ax = new_fig(left=0.17, bottom=0.19, right=0.86)
rng = np.random.default_rng(602)
xe = np.linspace(0, 12, 25)
ye = np.linspace(0, 9, 19)
X, Y = np.meshgrid(xe, ye)
Z = (1200 * np.exp(-(((X - 4.2) / 2.2) ** 2 + ((Y - 4.6) / 1.8) ** 2))
+ 900 * np.exp(-(((X - 9.0) / 1.6) ** 2 + ((Y - 3.0) / 1.4) ** 2))
+ rng.normal(0, 40, X.shape)).clip(20)
m = ax.pcolormesh(X, Y, Z, cmap=CMAP_SEQ, shading="gouraud", rasterized=True)
ax.set_xlabel("东向距离 " + IT["x"] + " / km")
ax.set_ylabel("北向距离 " + IT["y"] + " / km")
ax.set_aspect("equal")
_cbar(fig, ax, m, "负荷密度 / (kW/km²)")
save(fig, "15_网格图", "15_网格图_供电分区负荷密度")
def pcm_04():
"""风电场风功率密度分布。"""
fig, ax = new_fig(left=0.17, bottom=0.19, right=0.86)
rng = np.random.default_rng(603)
xe = np.linspace(0, 6, 31)
ye = np.linspace(0, 4, 21)
X, Y = np.meshgrid(xe, ye)
Z = 320 + 180 * np.exp(-(((X - 2.0) / 1.4) ** 2 + ((Y - 2.4) / 1.0) ** 2)) \
+ 140 * np.exp(-(((X - 4.6) / 1.0) ** 2 + ((Y - 1.3) / 0.9) ** 2)) \
+ rng.normal(0, 16, X.shape)
m = ax.pcolormesh(X, Y, Z, cmap=CMAP_SEQ, shading="nearest", rasterized=True)
ax.set_xlabel("东向距离 " + IT["x"] + " / km")
ax.set_ylabel("北向距离 " + IT["y"] + " / km")
ax.set_aspect("equal")
_cbar(fig, ax, m, "风功率密度 / (W/m²)")
save(fig, "15_网格图", "15_网格图_风功率密度分布")
def pcm_05():
"""绝缘子表面电位分布(不规则极坐标网格映射)。"""
fig, ax = new_fig(left=0.17, bottom=0.19, right=0.86)
r = np.linspace(0, 1.0, 46)
z = np.concatenate([np.linspace(0, 0.15, 12), np.linspace(0.15, 1.2, 30)[1:]])
R, Zc = np.meshgrid(r, z)
V = 100 * np.exp(-((R - 0.35) / 0.30) ** 2) * (1 - 0.45 * Zc / 1.2) \
+ 22 * np.sin(Zc * 9) ** 2 * np.exp(-((R - 0.55) / 0.2) ** 2)
m = ax.pcolormesh(R, Zc, V, cmap=CMAP_SEQ, shading="auto", rasterized=True)
ax.set_xlabel("径向位置 " + IT["r"] + " / m")
ax.set_ylabel("轴向位置 " + IT["z"] + " / m")
_cbar(fig, ax, m, "表面电位 " + IT["U"] + " / kV")
save(fig, "15_网格图", "15_网格图_绝缘子表面电位")
说明
- 图片 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
- 图内不放标题,图题由本文件的标题承担。
- 数据为 10 kV 配网、380 V 低压、50 Hz 量级的仿真算例,随机种子固定,重跑结果一致。
浙公网安备 33010602011771号