10 填充带 fill_between
用途
区间与置信带,如预测区间、电压允许范围、储能 SOC 运行上下限。
示例(5 张)
10-1 光伏出力预测区间(P10~P90 带 + 预测中值)

10-2 母线负荷预测置信带

10-3 节点电压运行范围与实测曲线(GB/T 12325 允许偏差带)

10-4 储能荷电状态运行区间与上下限

10-5 系统频率偏差与一次调频死区

代码
以下 5 个函数取自 code/第三批_面积与场261106.py,直接调用即可出图。版式(宋体 + Times、10 磅、刻度朝内四边、图内无标题、留白自检)由 code/公共配置261106.py 的 setup_cn_style() 与 save() 统一提供。
# 摘自 code/第三批_面积与场261106.py
def fill_01():
"""光伏出力预测区间(P10~P90 带 + 预测中值)。"""
fig, ax = new_fig()
t = np.arange(5, 20.01, 0.5)
mid = 820 * np.sin((t - 5) / 15 * np.pi) ** 1.3
lo = mid * 0.72
hi = np.minimum(mid * 1.18, 980)
ax.fill_between(t, lo, hi, color=C5, alpha=0.55, linewidth=0,
label="P10~P90 区间")
ax.plot(t, mid, color=C1, lw=1.0, label="预测中值")
ax.plot(t, lo, color=C4, lw=0.6, ls="--", label="P10")
ax.plot(t, hi, color=C4, lw=0.6, ls=":", label="P90")
ax.set_xlabel("时间 " + IT["t"] + " / h")
ax.set_ylabel("有功出力 " + IT["P"] + " / kW")
ax.set_xlim(5, 20)
ax.set_ylim(-40, 1480)
legend(ax, "upper center", ncol=2)
save(fig, "10_填充带", "10_填充带_光伏出力预测区间")
def fill_02():
"""母线负荷预测置信带。"""
fig, ax = new_fig()
t = np.arange(0, 24.01, 1.0)
base = 480 + 170 * np.exp(-((t - 10) / 3.4) ** 2) + 210 * np.exp(-((t - 16) / 3.0) ** 2)
sd = 18 + 26 * (1 - np.exp(-((t - 12) / 8) ** 2))
ax.fill_between(t, base - 1.96 * sd, base + 1.96 * sd, color=C5, alpha=0.5,
linewidth=0, label="95% 置信带")
ax.plot(t, base, color=C1, lw=1.0, marker="o", markevery=3, ms=3, label="预测值")
ax.set_xlabel("时间 " + IT["t"] + " / h")
ax.set_ylabel("有功负荷 " + IT["P"] + " / kW")
ax.set_xlim(0, 24)
ax.set_ylim(380, 880)
legend(ax, "upper center", ncol=2)
save(fig, "10_填充带", "10_填充带_负荷预测置信带")
def fill_03():
"""节点电压运行范围与实测曲线(GB/T 12325 允许偏差带)。"""
fig, ax = new_fig()
t = np.arange(0, 24.01, 0.5)
u = 10.0 + 0.22 * np.sin((t - 8) / 24 * 2 * np.pi) + 0.05 * np.sin(t * 1.7)
ax.axhspan(9.3, 10.7, color=C5, alpha=0.35, linewidth=0, label="±7% 允许范围")
ax.plot(t, u, color=C1, lw=1.0, label="实测电压")
ax.axhline(10.7, color=C2, lw=0.6, ls="--")
ax.axhline(9.3, color=C2, lw=0.6, ls="--")
ax.set_xlabel("时间 " + IT["t"] + " / h")
ax.set_ylabel("母线电压 " + IT["U"] + " / kV")
ax.set_xlim(0, 24)
ax.set_ylim(9.0, 11.0)
legend(ax, "upper center", ncol=2)
save(fig, "10_填充带", "10_填充带_节点电压允许范围")
def fill_04():
"""储能荷电状态运行区间与上下限。"""
fig, ax = new_fig()
t = np.arange(0, 24.01, 0.5)
soc = 58 + 26 * np.sin((t - 4) / 24 * 2 * np.pi)
ax.fill_between(t, 10, 90, color=C5, alpha=0.30, linewidth=0, label="允许运行区间")
ax.fill_between(t, soc, 58, where=soc >= 58, color=C3, alpha=0.45,
linewidth=0, label="放电段")
ax.fill_between(t, soc, 58, where=soc < 58, color=C1, alpha=0.30,
linewidth=0, label="充电段")
ax.plot(t, soc, color=C1, lw=1.0, label="SOC 轨迹")
ax.axhline(90, color=C2, lw=0.6, ls="--")
ax.axhline(10, color=C2, lw=0.6, ls="--")
ax.set_xlabel("时间 " + IT["t"] + " / h")
ax.set_ylabel("荷电状态 SOC / %")
ax.set_xlim(0, 24)
ax.set_ylim(0, 108)
legend(ax, "upper center", ncol=3)
save(fig, "10_填充带", "10_填充带_储能SOC运行区间")
def fill_05():
"""系统频率偏差与一次调频死区。"""
fig, ax = new_fig()
t = np.linspace(0, 60, 400)
df = 0.16 * np.exp(-((t - 22) / 5.0) ** 2) - 0.11 * np.exp(-((t - 45) / 6.0) ** 2)
ax.axhspan(-0.05, 0.05, color=C5, alpha=0.45, linewidth=0, label="调频死区 ±0.05 Hz")
ax.plot(t, df, color=C1, lw=1.0, label="频率偏差")
ax.axhline(0.2, color=C2, lw=0.6, ls="--", label="允许上限 +0.2 Hz")
ax.axhline(-0.2, color=C2, lw=0.6, ls=":", label="允许下限 -0.2 Hz")
ax.set_xlabel("时间 " + IT["t"] + " / s")
ax.set_ylabel("频率偏差 Δ" + IT["f"] + " / Hz")
ax.set_xlim(0, 60)
ax.set_ylim(-0.27, 0.32)
legend(ax, "lower left", ncol=2)
save(fig, "10_填充带", "10_填充带_系统频率偏差")
说明
- 图片 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
- 图内不放标题,图题由本文件的标题承担。
- 数据为 10 kV 配网、380 V 低压、50 Hz 量级的仿真算例,随机种子固定,重跑结果一致。
浙公网安备 33010602011771号