03 柱状图 bar
用途
离散类别的量值比较,如各次谐波含有率、分时段用电量;分组柱与堆叠柱都基于它。
示例(5 张)
03-1 母线电压各次谐波含有率

03-2 分时段用电量统计(纵向柱,峰值时段高亮)

03-3 各支路电流有效值对比

03-4 全年各月发电量

03-5 三种降损方案的年线损对比

代码
以下 5 个函数取自 code/第一批_基础图型261106.py,直接调用即可出图。版式(宋体 + Times、10 磅、刻度朝内四边、图内无标题、留白自检)由 code/公共配置261106.py 的 setup_cn_style() 与 save() 统一提供。
# 摘自 code/第一批_基础图型261106.py
def bar_01():
"""母线电压各次谐波含有率。"""
fig, ax = new_fig()
h = [1, 3, 5, 7, 9, 11, 13, 15]
u = [100, 3.8, 5.2, 3.1, 1.6, 1.1, 0.7, 0.4]
bars = ax.bar(range(len(h)), u, width=0.62, color=C1, edgecolor="0.35", linewidth=0.5)
for b, v in zip(bars, u):
ax.text(b.get_x() + b.get_width() / 2, v + 1.6, f"{v:g}", ha="center",
va="bottom", fontsize=FS - 2)
ax.set_xticks(range(len(h)))
ax.set_xticklabels([f"{i}" for i in h])
ax.set_xlabel("谐波次数 " + IT["h"])
ax.set_ylabel("电压含有率 / %")
ax.set_ylim(0, 118)
save(fig, "03_柱状", "03_柱状_电压谐波含有率")
def bar_02():
"""分时段用电量统计(纵向柱,峰值时段高亮)。"""
fig, ax = new_fig()
seg = ["0-4", "4-8", "8-12", "12-16", "16-20", "20-24"]
e = [86, 152, 268, 234, 291, 140]
cols = [C5] * 6
cols[4] = C2
bars = ax.bar(range(len(seg)), e, width=0.62, color=cols, edgecolor="0.35",
linewidth=0.5)
for b, v in zip(bars, e):
ax.text(b.get_x() + b.get_width() / 2, v + 6, f"{v}", ha="center",
va="bottom", fontsize=FS - 2)
ax.set_xticks(range(len(seg)))
ax.set_xticklabels([s + " 时" for s in seg])
ax.set_xlabel("时段")
ax.set_ylabel("用电量 " + IT["E"] + " / (MW·h)")
ax.set_ylim(0, 350)
save(fig, "03_柱状", "03_柱状_分时段用电量")
def bar_03():
"""各支路电流有效值对比。"""
fig, ax = new_fig()
br = ["L1", "L2", "L3", "L4", "L5", "L6"]
a = [312, 268, 401, 175, 356, 224]
b = [298, 251, 388, 180, 340, 231]
x = np.arange(len(br))
ax.bar(x - 0.19, a, width=0.36, color=C1, edgecolor="0.35", linewidth=0.5,
label="改造前")
ax.bar(x + 0.19, b, width=0.36, color=C3, edgecolor="0.35", linewidth=0.5,
label="改造后")
ax.set_xticks(x)
ax.set_xticklabels(br)
ax.set_xlabel("支路")
ax.set_ylabel("电流有效值 " + IT["I"] + " / A")
ax.set_ylim(0, 470)
legend(ax, "upper right", ncol=2)
save(fig, "03_柱状", "03_柱状_各支路电流对比")
def bar_04():
"""全年各月发电量。"""
fig, ax = new_fig()
m = np.arange(1, 13)
gen = [182, 196, 264, 318, 402, 438, 486, 472, 388, 296, 214, 178]
cols = [C5 if v < 300 else C1 for v in gen]
bars = ax.bar(m, gen, width=0.66, color=cols, edgecolor="0.35", linewidth=0.5)
ax.plot(m, np.full_like(m, np.mean(gen), dtype=float), color=C2, ls="--", lw=1.0,
label="年平均 " + f"{np.mean(gen):.0f}")
for b, v in zip(bars, gen):
if v == max(gen):
ax.text(b.get_x() + b.get_width() / 2, v + 8, f"{v}", ha="center",
va="bottom", fontsize=FS - 2)
ax.set_xticks(m)
ax.set_xticklabels([f"{i}" for i in m])
ax.set_xlabel("月份")
ax.set_ylabel("发电量 " + IT["E"] + " / (GW·h)")
ax.set_ylim(120, 560)
legend(ax, "upper left", ncol=1)
save(fig, "03_柱状", "03_柱状_全年各月发电量")
def bar_05():
"""三种降损方案的年线损对比。"""
fig, ax = new_fig()
plan = ["方案一", "方案二", "方案三"]
before = [4.62, 4.62, 4.62]
after = [3.71, 3.24, 2.86]
x = np.arange(len(plan))
ax.bar(x - 0.18, before, width=0.34, color=C6, edgecolor="0.35", linewidth=0.5,
label="改造前")
ax.bar(x + 0.18, after, width=0.34, color=C1, edgecolor="0.35", linewidth=0.5,
label="改造后")
for xi, v in zip(x + 0.18, after):
ax.text(xi, v + 0.12, f"{v:.2f}", ha="center", va="bottom", fontsize=FS - 2)
ax.set_xticks(x)
ax.set_xticklabels(plan)
ax.set_xlabel("降损方案")
ax.set_ylabel("年线损率 / %")
ax.set_ylim(0, 5.6)
legend(ax, "upper right", ncol=1)
save(fig, "03_柱状", "03_柱状_三方案年线损对比")
说明
- 图片 1181×944 px(100 mm × 80 mm @ 300 dpi),三维图为 1181×1122 px。
- 图内不放标题,图题由本文件的标题承担。
- 数据为 10 kV 配网、380 V 低压、50 Hz 量级的仿真算例,随机种子固定,重跑结果一致。
浙公网安备 33010602011771号