35 瀑布图

35 瀑布图

用途

把总量的增减逐项拆开,看每一项贡献了多少。

示例(5 张)

35-1 配电网线损构成的瀑布分解

配电网线损构成的瀑布分解

35-2 储能项目投资构成的瀑布分解

储能项目投资构成的瀑布分解

35-3 年度负荷增长的瀑布分解

年度负荷增长的瀑布分解

35-4 园区碳排放变化的瀑布分解

园区碳排放变化的瀑布分解

35-5 年运行成本变化的瀑布分解

年运行成本变化的瀑布分解

代码

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

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

def wt_01():
    """配电网线损构成的瀑布分解。"""
    fig, ax = new_fig(left=0.19)
    labels = ["总损耗", "线路", "配变空载", "配变负载", "计量", "其他"]
    deltas = [4.62, -1.76, -0.97, -1.11, -0.55, -0.23]
    base = 0.0
    for i, (lb, dv) in enumerate(zip(labels, deltas)):
        if i == 0:
            ax.bar(i, dv, width=0.6, color=C4, edgecolor="0.35", linewidth=0.5)
            base = dv
        else:
            ax.bar(i, dv, bottom=base + dv if dv < 0 else base, width=0.6,
                   color=C1 if dv < 0 else C3, edgecolor="0.35", linewidth=0.5)
            base += dv
    ax.set_xticks(range(len(labels)))
    ax.set_xticklabels(labels)
    ax.set_xlabel("损耗项")
    ax.set_ylabel("线损率 / %")
    ax.set_ylim(0, 5.4)
    save(fig, "35_瀑布图", "35_瀑布图_线损构成分解")

def wt_02():
    """储能项目投资构成的瀑布分解。"""
    fig, ax = new_fig(left=0.19)
    labels = ["总投资", "电池", "PCS", "土建", "接入", "其他"]
    deltas = [420, -210, -86, -58, -42, -24]
    base = 0.0
    for i, dv in enumerate(deltas):
        if i == 0:
            ax.bar(i, dv, width=0.6, color=C4, edgecolor="0.35", linewidth=0.5)
            base = dv
        else:
            ax.bar(i, dv, bottom=base + dv, width=0.6, color=C1,
                   edgecolor="0.35", linewidth=0.5)
            base += dv
    ax.set_xticks(range(len(labels)))
    ax.set_xticklabels(labels)
    ax.set_xlabel("投资项")
    ax.set_ylabel("投资 / 万元")
    ax.set_ylim(0, 480)
    save(fig, "35_瀑布图", "35_瀑布图_投资构成分解")

def wt_03():
    """年度负荷增长的瀑布分解。"""
    fig, ax = new_fig(left=0.19)
    labels = ["上年", "工业", "商业", "居民", "充电桩", "本年"]
    deltas = [860, 64, 38, 22, 46, 0]
    base = 0.0
    for i, dv in enumerate(deltas):
        if i in (0, 5):
            v = dv if i == 0 else base
            ax.bar(i, v, width=0.6, color=C4, edgecolor="0.35", linewidth=0.5)
            if i == 0:
                base = v
        else:
            ax.bar(i, dv, bottom=base, width=0.6, color=C3,
                   edgecolor="0.35", linewidth=0.5)
            base += dv
    ax.set_xticks(range(len(labels)))
    ax.set_xticklabels(labels)
    ax.set_xlabel("负荷构成")
    ax.set_ylabel("最大负荷 " + IT["P"] + " / kW")
    ax.set_ylim(760, 1080)
    save(fig, "35_瀑布图", "35_瀑布图_负荷增长分解")

def wt_04():
    """园区碳排放变化的瀑布分解。"""
    fig, ax = new_fig(left=0.19)
    labels = ["基准年", "光伏", "储能", "能效", "电气化", "目标年"]
    deltas = [12000, -1800, -640, -920, 460, 0]
    base = 0.0
    for i, dv in enumerate(deltas):
        if i in (0, 5):
            v = dv if i == 0 else base
            ax.bar(i, v, width=0.6, color=C4, edgecolor="0.35", linewidth=0.5)
            if i == 0:
                base = v
        else:
            if dv < 0:
                ax.bar(i, dv, bottom=base + dv, width=0.6, color=C1,
                       edgecolor="0.35", linewidth=0.5)
            else:
                ax.bar(i, dv, bottom=base, width=0.6, color=C3,
                       edgecolor="0.35", linewidth=0.5)
            base += dv
    ax.set_xticks(range(len(labels)))
    ax.set_xticklabels(labels)
    ax.set_xlabel("影响因素")
    ax.set_ylabel("碳排放 / (t/a)")
    ax.set_ylim(0, 13500)
    save(fig, "35_瀑布图", "35_瀑布图_碳排放变化分解")

def wt_05():
    """年运行成本变化的瀑布分解。"""
    fig, ax = new_fig(left=0.19)
    labels = ["上年成本", "电价上涨", "负荷增长", "降损", "运维优化", "本年成本"]
    deltas = [680, 46, 38, -32, -18, 0]
    base = 0.0
    for i, dv in enumerate(deltas):
        if i in (0, 5):
            v = dv if i == 0 else base
            ax.bar(i, v, width=0.6, color=C4, edgecolor="0.35", linewidth=0.5)
            if i == 0:
                base = v
        else:
            if dv > 0:
                ax.bar(i, dv, bottom=base, width=0.6, color=C3,
                       edgecolor="0.35", linewidth=0.5)
            else:
                ax.bar(i, dv, bottom=base + dv, width=0.6, color=C1,
                       edgecolor="0.35", linewidth=0.5)
            base += dv
    ax.set_xticks(range(len(labels)))
    ax.set_xticklabels(labels)
    ax.set_xlabel("成本因素")
    ax.set_ylabel("年运行成本 / 万元")
    ax.set_ylim(560, 790)
    save(fig, "35_瀑布图", "35_瀑布图_运行成本变化")

说明

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