41 子弹图

用途

实际值与目标值的对照,背景色阶给出定性区间。

示例(5 张)

41-1 各馈线负载率对目标值的子弹图

各馈线负载率对目标值的子弹图

41-2 线损率对考核目标的子弹图

线损率对考核目标的子弹图

41-3 各区域电压合格率对目标的子弹图

各区域电压合格率对目标的子弹图

41-4 供电可靠性指标对目标的子弹图

供电可靠性指标对目标的子弹图

41-5 各区域新能源渗透率对目标的子弹图

各区域新能源渗透率对目标的子弹图

代码

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

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

def bl_01():
    """各馈线负载率对目标值的子弹图。"""
    fig, ax = new_fig(left=0.20)
    fd = ["城东", "城西", "城南", "城北", "新区"]
    actual = np.array([86, 72, 94, 61, 103])
    target = 80.0
    for i, v in enumerate(actual):
        ax.barh(i, 120, height=0.62, color="#E8EEF6", edgecolor="none")
        ax.barh(i, 90, height=0.42, color="#C7D8EC", edgecolor="none")
        ax.barh(i, 60, height=0.22, color="#A8C2DE", edgecolor="none")
        ax.barh(i, v, height=0.5, color=C1, edgecolor="0.3", linewidth=0.5)
        ax.plot([target, target], [i - 0.3, i + 0.3], color=C2, lw=1.6)
    ax.set_yticks(range(len(fd)))
    ax.set_yticklabels(fd)
    ax.set_ylim(-0.6, len(fd) - 0.4)
    ax.set_xlabel("负载率 / %")
    ax.set_ylabel("馈线")
    ax.set_xlim(0, 125)
    save(fig, "41_子弹图", "41_子弹图_馈线负载率")

def bl_02():
    """线损率对考核目标的子弹图。"""
    fig, ax = new_fig(left=0.22)
    item = ["全网", "城网", "农网", "工业园", "新区"]
    actual = np.array([4.62, 3.98, 5.86, 4.24, 3.42])
    target = 5.0
    for i, v in enumerate(actual):
        ax.barh(i, 8, height=0.62, color="#E8EEF6", edgecolor="none")
        ax.barh(i, 6, height=0.42, color="#C7D8EC", edgecolor="none")
        ax.barh(i, 4, height=0.22, color="#A8C2DE", edgecolor="none")
        ax.barh(i, v, height=0.5, color=C3, edgecolor="0.3", linewidth=0.5)
        ax.plot([target, target], [i - 0.3, i + 0.3], color=C2, lw=1.6)
    ax.set_yticks(range(len(item)))
    ax.set_yticklabels(item)
    ax.set_ylim(-0.6, len(item) - 0.4)
    ax.set_xlabel("线损率 / %")
    ax.set_ylabel("统计口径")
    ax.set_xlim(0, 8.4)
    save(fig, "41_子弹图", "41_子弹图_线损率考核")

def bl_03():
    """各区域电压合格率对目标的子弹图。"""
    fig, ax = new_fig(left=0.22)
    area = ["A 区", "B 区", "C 区", "D 区", "E 区"]
    actual = np.array([99.62, 98.94, 97.86, 99.31, 96.72])
    target = 98.0
    for i, v in enumerate(actual):
        ax.barh(i, 100, height=0.62, color="#E8EEF6", edgecolor="none")
        ax.barh(i, 97, height=0.42, color="#C7D8EC", edgecolor="none")
        ax.barh(i, 94, height=0.22, color="#A8C2DE", edgecolor="none")
        ax.barh(i, v, height=0.5, color=C1, edgecolor="0.3", linewidth=0.5)
        ax.plot([target, target], [i - 0.3, i + 0.3], color=C2, lw=1.6)
    ax.set_yticks(range(len(area)))
    ax.set_yticklabels(area)
    ax.set_ylim(-0.6, len(area) - 0.4)
    ax.set_xlabel("电压合格率 / %")
    ax.set_ylabel("供电区域")
    ax.set_xlim(92, 100.5)
    save(fig, "41_子弹图", "41_子弹图_电压合格率")

def bl_04():
    """供电可靠性指标对目标的子弹图。"""
    fig, ax = new_fig(left=0.22)
    item = ["SAIDI", "SAIFI", "CAIDI", "ASAI"]
    actual = np.array([2.86, 0.92, 3.11, 99.962])
    target = np.array([3.50, 1.20, 3.50, 99.950])
    for i, v in enumerate(actual):
        ax.barh(i, 4.6, height=0.62, color="#E8EEF6", edgecolor="none")
        ax.barh(i, 3.6, height=0.42, color="#C7D8EC", edgecolor="none")
        ax.barh(i, 2.6, height=0.22, color="#A8C2DE", edgecolor="none")
        ax.barh(i, v, height=0.5, color=C5, edgecolor="0.3", linewidth=0.5)
        ax.plot([target[i], target[i]], [i - 0.3, i + 0.3], color=C2, lw=1.6)
    ax.set_yticks(range(len(item)))
    ax.set_yticklabels(item)
    ax.set_ylim(-0.6, len(item) - 0.4)
    ax.set_xlabel("指标值(归一到同一坐标)")
    ax.set_ylabel("可靠性指标")
    ax.set_xlim(0, 4.8)
    save(fig, "41_子弹图", "41_子弹图_供电可靠性")

def bl_05():
    """各区域新能源渗透率对目标的子弹图。"""
    fig, ax = new_fig(left=0.22)
    area = ["北区", "南区", "东区", "西区", "中心区"]
    actual = np.array([42, 36, 28, 46, 18])
    target = 35.0
    for i, v in enumerate(actual):
        ax.barh(i, 60, height=0.62, color="#E8EEF6", edgecolor="none")
        ax.barh(i, 45, height=0.42, color="#C7D8EC", edgecolor="none")
        ax.barh(i, 30, height=0.22, color="#A8C2DE", edgecolor="none")
        ax.barh(i, v, height=0.5, color=C3, edgecolor="0.3", linewidth=0.5)
        ax.plot([target, target], [i - 0.3, i + 0.3], color=C2, lw=1.6)
    ax.set_yticks(range(len(area)))
    ax.set_yticklabels(area)
    ax.set_ylim(-0.6, len(area) - 0.4)
    ax.set_xlabel("新能源渗透率 / %")
    ax.set_ylabel("供电区域")
    ax.set_xlim(0, 62)
    save(fig, "41_子弹图", "41_子弹图_新能源渗透率")

说明

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