09 误差棒图 errorbar
用途
测量值及其不确定度,用于实测与仿真对比、多次测量的标准差表达。
示例(5 张)
09-1 实测与仿真节点电压对比(含测量误差棒)

09-2 变压器不同负载率下的效率测量值与标准差

09-3 各次谐波电流测量值与不确定度(对数纵轴)

09-4 电缆接头温度测量值随环境温度变化(三测点)

09-5 短期负荷预测各时段误差(MAPE 与置信区间)

代码
以下 5 个函数取自 code/第二批_分布图型261106.py,直接调用即可出图。版式(宋体 + Times、10 磅、刻度朝内四边、图内无标题、留白自检)由 code/公共配置261106.py 的 setup_cn_style() 与 save() 统一提供。
# 摘自 code/第二批_分布图型261106.py
def err_01():
"""实测与仿真节点电压对比(含测量误差棒)。"""
fig, ax = new_fig(left=0.19)
rng = np.random.default_rng(401)
node = np.arange(1, 9)
sim = np.array([10.12, 10.06, 9.98, 9.91, 9.86, 9.94, 10.03, 10.09])
err = rng.uniform(0.012, 0.032, 8)
meas = sim + rng.normal(0, 0.012, 8)
ax.errorbar(node, sim, yerr=err, fmt="o", color=C1, ms=4, lw=1.0,
capsize=3, capthick=0.7, elinewidth=0.7, label="仿真值 ± 误差")
ax.plot(node, meas, ls="none", marker="s", ms=4, color=C2, label="实测值")
ax.set_xlabel("节点编号")
ax.set_ylabel("节点电压 " + IT["U"] + " / kV")
ax.set_xticks(node)
ax.set_xlim(0.5, 8.5)
ax.set_ylim(9.80, 10.20)
legend(ax, "lower left", ncol=1)
save(fig, "09_误差棒", "09_误差棒_节点电压实测与仿真")
def err_02():
"""变压器不同负载率下的效率测量值与标准差。"""
fig, ax = new_fig(left=0.19)
rng = np.random.default_rng(402)
beta = np.linspace(0.1, 1.0, 10)
eff = 98.55 - 1.65 * (1 - beta) ** 1.4 - 0.55 * beta ** 3
sd = rng.uniform(0.05, 0.14, 10)
ax.errorbar(beta, eff, yerr=sd, fmt="-o", color=C1, ms=3.5, lw=1.0,
capsize=3, capthick=0.7, elinewidth=0.7, label="实测均值 ± 标准差")
ax.set_xlabel("负载率 " + IT["beta"])
ax.set_ylabel("效率 " + IT["eta"] + " / %")
ax.set_xlim(0, 1.05)
ax.set_ylim(97.0, 99.2)
legend(ax, "lower right", ncol=1)
save(fig, "09_误差棒", "09_误差棒_变压器效率测量")
def err_03():
"""各次谐波电流测量值与不确定度(对数纵轴)。"""
fig, ax = new_fig(left=0.19)
rng = np.random.default_rng(403)
h = np.array([2, 3, 4, 5, 6, 7, 9, 11, 13])
amp = np.array([4.2, 38.6, 2.1, 26.4, 1.3, 15.8, 6.2, 3.4, 1.8])
err = amp * rng.uniform(0.04, 0.11, len(h))
ax.errorbar(h, amp, yerr=err, fmt="s", color=C1, ms=4, lw=1.0,
capsize=3, capthick=0.7, elinewidth=0.7, label="测量值 ± 不确定度")
ax.set_yscale("log")
ax.set_xlabel("谐波次数 " + IT["h"])
ax.set_ylabel("谐波电流 " + IT["I"] + SUB["h"] + " / A")
ax.set_xticks(h)
ax.set_xlim(1, 14)
legend(ax, "lower left", ncol=1)
save(fig, "09_误差棒", "09_误差棒_谐波电流不确定度")
def err_04():
"""电缆接头温度测量值随环境温度变化(三测点)。"""
fig, ax = new_fig(left=0.19)
rng = np.random.default_rng(404)
ta = np.arange(5, 41, 4)
for i, (slope, nm) in enumerate([(1.62, "接头 A"), (1.48, "接头 B"),
(1.75, "接头 C")]):
tc = 8 + slope * ta
sd = rng.uniform(0.6, 1.5, len(ta))
ax.errorbar(ta, tc, yerr=sd, fmt=["o", "s", "^"][i],
color=COLORS[i], ms=3.5, lw=1.0, capsize=2.5,
capthick=0.7, elinewidth=0.7, label=nm)
ax.set_xlabel("环境温度 " + IT["T"] + SUB["0"] + " / °C")
ax.set_ylabel("接头温度 " + IT["T"] + " / °C")
ax.set_xlim(0, 45)
ax.margins(y=0.22)
legend(ax, "upper left", ncol=1)
save(fig, "09_误差棒", "09_误差棒_电缆接头温度")
def err_05():
"""短期负荷预测各时段误差(MAPE 与置信区间)。"""
fig, ax = new_fig(left=0.19)
rng = np.random.default_rng(405)
t = np.arange(1, 25)
mape = 3.2 + 1.8 * np.abs(np.sin(t / 24 * np.pi)) + rng.normal(0, 0.25, 24)
ci = 0.9 + 0.35 * np.sin(t / 24 * np.pi * 2) ** 2
ax.errorbar(t, mape, yerr=ci, fmt="-o", color=C1, ms=3, lw=1.0,
capsize=2.5, capthick=0.7, elinewidth=0.7,
label="平均绝对百分比误差 ± 置信半宽")
ax.axhline(np.mean(mape), color=C2, lw=0.8, ls="--",
label="全日均值 " + f"{np.mean(mape):.2f}%")
ax.set_xlabel("时刻 " + IT["t"] + " / h")
ax.set_ylabel("预测误差 MAPE / %")
ax.set_xlim(0, 25)
ax.set_ylim(2.0, 6.6)
legend(ax, "upper center", ncol=1)
save(fig, "09_误差棒", "09_误差棒_短期负荷预测误差")
说明
- 图片 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
- 图内不放标题,图题由本文件的标题承担。
- 数据为 10 kV 配网、380 V 低压、50 Hz 量级的仿真算例,随机种子固定,重跑结果一致。
浙公网安备 33010602011771号