40 哑铃图

40 哑铃图

用途

两点一线的对比,改造前后、方案前后一目了然。

示例(5 张)

40-1 改造前后各段线损率的哑铃图

改造前后各段线损率的哑铃图

40-2 各节点改造前后电压的哑铃图

各节点改造前后电压的哑铃图

40-3 各馈线改造前后负载率的哑铃图

各馈线改造前后负载率的哑铃图

40-4 各方案投运前后效率的哑铃图

各方案投运前后效率的哑铃图

40-5 各月峰谷差变化的哑铃图

各月峰谷差变化的哑铃图

代码

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

# 摘自 code/第六批_组合图261107.py

def db_01():
    """改造前后各段线损率的哑铃图。"""
    fig, ax = new_fig(left=0.24)
    seg = ["主干线", "支线 1", "支线 2", "支线 3", "接户线"]
    before = np.array([4.8, 5.6, 4.2, 6.1, 3.6])
    after = np.array([3.4, 4.1, 3.2, 4.4, 2.9])
    y = np.arange(len(seg))
    for i in range(len(seg)):
        ax.plot([after[i], before[i]], [y[i], y[i]], color=C6, lw=1.2, zorder=1)
    ax.scatter(before, y, s=28, color=C2, zorder=2, label="改造前")
    ax.scatter(after, y, s=28, color=C1, zorder=2, label="改造后")
    ax.set_yticks(y)
    ax.set_yticklabels(seg)
    ax.set_ylim(-0.6, len(seg) - 0.4)
    ax.set_xlabel("线损率 / %")
    ax.set_ylabel("线路区段")
    legend(ax, "lower right", ncol=1)
    save(fig, "40_哑铃图", "40_哑铃图_改造前后线损")

def db_02():
    """各节点改造前后电压的哑铃图。"""
    fig, ax = new_fig(left=0.19)
    node = [f"N{i}" for i in range(1, 8)]
    before = np.array([9.72, 9.68, 9.61, 9.58, 9.65, 9.70, 9.75])
    after = np.array([10.02, 9.98, 9.94, 9.91, 9.96, 10.01, 10.05])
    y = np.arange(len(node))
    for i in range(len(node)):
        ax.plot([before[i], after[i]], [y[i], y[i]], color=C6, lw=1.2, zorder=1)
    ax.scatter(before, y, s=28, color=C2, zorder=2, label="改造前")
    ax.scatter(after, y, s=28, color=C1, zorder=2, label="改造后")
    ax.set_yticks(y)
    ax.set_yticklabels(node)
    ax.set_ylim(-0.6, len(node) - 0.4)
    ax.set_xlabel("节点电压 " + IT["U"] + " / kV")
    ax.set_ylabel("节点")
    legend(ax, "lower right", ncol=1)
    save(fig, "40_哑铃图", "40_哑铃图_改造前后电压")

def db_03():
    """各馈线改造前后负载率的哑铃图。"""
    fig, ax = new_fig(left=0.20)
    fd = ["城东", "城西", "城南", "城北", "新区"]
    before = np.array([86, 92, 103, 74, 68])
    after = np.array([72, 78, 86, 64, 58])
    y = np.arange(len(fd))
    for i in range(len(fd)):
        ax.plot([after[i], before[i]], [y[i], y[i]], color=C6, lw=1.2, zorder=1)
    ax.scatter(before, y, s=28, color=C2, zorder=2, label="改造前")
    ax.scatter(after, y, s=28, color=C1, zorder=2, label="改造后")
    ax.axvline(100, color=C4, lw=0.6, ls=":", label="满载线")
    ax.set_yticks(y)
    ax.set_yticklabels(fd)
    ax.set_ylim(-0.6, len(fd) - 0.4)
    ax.set_xlabel("最大负载率 / %")
    ax.set_ylabel("馈线")
    ax.set_xlim(50, 112)
    legend(ax, "lower left", ncol=1)
    save(fig, "40_哑铃图", "40_哑铃图_改造前后负载率")

def db_04():
    """各方案投运前后效率的哑铃图。"""
    fig, ax = new_fig(left=0.22)
    plan = ["方案一", "方案二", "方案三", "方案四"]
    before = np.array([0.842, 0.842, 0.842, 0.842])
    after = np.array([0.881, 0.906, 0.924, 0.893])
    y = np.arange(len(plan))
    for i in range(len(plan)):
        ax.plot([before[i], after[i]], [y[i], y[i]], color=C6, lw=1.2, zorder=1)
    ax.scatter(before, y, s=30, color=C2, zorder=2, label="原状")
    ax.scatter(after, y, s=30, color=C1, zorder=2, label="投运后")
    ax.set_yticks(y)
    ax.set_yticklabels(plan)
    ax.set_ylim(-0.6, len(plan) - 0.4)
    ax.set_xlabel("系统综合效率 " + IT["eta"])
    ax.set_ylabel("配置方案")
    ax.set_xlim(0.83, 0.94)
    legend(ax, "lower right", ncol=1)
    save(fig, "40_哑铃图", "40_哑铃图_方案前后效率")

def db_05():
    """各月峰谷差变化的哑铃图。"""
    fig, ax = new_fig(left=0.19)
    mon = ["1", "2", "3", "4", "5", "6"]
    before = np.array([268, 252, 296, 312, 348, 372])
    after = np.array([232, 226, 258, 274, 306, 328])
    y = np.arange(len(mon))
    for i in range(len(mon)):
        ax.plot([after[i], before[i]], [y[i], y[i]], color=C6, lw=1.2, zorder=1)
    ax.scatter(before, y, s=28, color=C2, zorder=2, label="调节前")
    ax.scatter(after, y, s=28, color=C1, zorder=2, label="调节后")
    ax.set_yticks(y)
    ax.set_yticklabels(mon)
    ax.set_ylim(-0.6, len(mon) - 0.4)
    ax.set_xlabel("日峰谷差 " + IT["P"] + " / kW")
    ax.set_ylabel("月份")
    legend(ax, "lower left", ncol=1)
    save(fig, "40_哑铃图", "40_哑铃图_峰谷差变化")

说明

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