38 日历热图

38 日历热图

用途

一年逐日排成 7×53 网格,看全年负荷与出力的节律。

示例(5 张)

38-1 全年日最大负荷的日历热图

全年日最大负荷的日历热图

38-2 全年风电日发电量的日历热图

全年风电日发电量的日历热图

38-3 全年光伏日发电量的日历热图

全年光伏日发电量的日历热图

38-4 全年分时电价的日历热图

全年分时电价的日历热图

38-5 全年故障次数的日历热图

全年故障次数的日历热图

代码

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

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

def cal_01():
    """全年日最大负荷的日历热图。"""
    fig, ax = new_fig(left=0.20, bottom=0.22, right=0.86)
    rng = np.random.default_rng(3801)
    M = np.full((7, 53), np.nan)
    for d in range(365):
        wd = d % 7
        wk = 53 if d // 7 >= 53 else d // 7
        if wk >= 53:
            wk = 52
        season = 1 + 0.22 * np.cos((d - 15) / 365 * 2 * np.pi + np.pi)
        M[wd, wk] = 860 * season * (1.0 if wd < 5 else 0.82) + rng.normal(0, 22)
    im = ax.imshow(M, aspect="auto", cmap=CMAP_SEQ)
    ax.set_yticks(range(7))
    ax.set_yticklabels(["一", "二", "三", "四", "五", "六", "日"])
    ax.set_xticks([0, 8, 17, 26, 35, 44, 52])
    ax.set_xlabel("周序")
    ax.set_ylabel("星期")
    cbar(fig, ax, im, "最大负荷 " + IT["P"] + " / kW")
    save(fig, "38_日历热图", "38_日历热图_全年负荷")

def cal_02():
    """全年风电日发电量的日历热图。"""
    fig, ax = new_fig(left=0.20, bottom=0.22, right=0.86)
    rng = np.random.default_rng(3802)
    M = np.full((7, 53), np.nan)
    for d in range(365):
        wd, wk = d % 7, min(d // 7, 52)
        season = 1 + 0.35 * np.cos((d - 15) / 365 * 2 * np.pi + np.pi)
        M[wd, wk] = 6200 * season + rng.normal(0, 900)
    im = ax.imshow(M, aspect="auto", cmap=CMAP_SEQ)
    ax.set_yticks(range(7))
    ax.set_yticklabels(["一", "二", "三", "四", "五", "六", "日"])
    ax.set_xticks([0, 8, 17, 26, 35, 44, 52])
    ax.set_xlabel("周序")
    ax.set_ylabel("星期")
    cbar(fig, ax, im, "日发电量 / (kW·h)")
    save(fig, "38_日历热图", "38_日历热图_风电发电量")

def cal_03():
    """全年光伏日发电量的日历热图。"""
    fig, ax = new_fig(left=0.20, bottom=0.22, right=0.86)
    rng = np.random.default_rng(3803)
    M = np.full((7, 53), np.nan)
    for d in range(365):
        wd, wk = d % 7, min(d // 7, 52)
        season = 0.55 + 0.45 * np.cos((d - 172) / 365 * 2 * np.pi)
        M[wd, wk] = 4200 * season + rng.normal(0, 520)
    im = ax.imshow(M, aspect="auto", cmap=CMAP_SEQ)
    ax.set_yticks(range(7))
    ax.set_yticklabels(["一", "二", "三", "四", "五", "六", "日"])
    ax.set_xticks([0, 8, 17, 26, 35, 44, 52])
    ax.set_xlabel("周序")
    ax.set_ylabel("星期")
    cbar(fig, ax, im, "日发电量 / (kW·h)")
    save(fig, "38_日历热图", "38_日历热图_光伏发电量")

def cal_04():
    """全年分时电价的日历热图。"""
    fig, ax = new_fig(left=0.20, bottom=0.22, right=0.86)
    M = np.full((7, 53), np.nan)
    for d in range(365):
        wd, wk = d % 7, min(d // 7, 52)
        wkend = wd >= 5
        M[wd, wk] = 0.32 if wkend else (0.86 if 8 <= (d % 24) <= 20 else 0.58)
    for d in range(365):
        wd, wk = d % 7, min(d // 7, 52)
        M[wd, wk] = 0.62 if wd >= 5 else 0.86
    im = ax.imshow(M, aspect="auto", cmap=CMAP_SEQ, vmin=0.3, vmax=1.0)
    ax.set_yticks(range(7))
    ax.set_yticklabels(["一", "二", "三", "四", "五", "六", "日"])
    ax.set_xticks([0, 8, 17, 26, 35, 44, 52])
    ax.set_xlabel("周序")
    ax.set_ylabel("星期")
    cbar(fig, ax, im, "电价 / (元/(kW·h))")
    save(fig, "38_日历热图", "38_日历热图_分时电价")

def cal_05():
    """全年故障次数的日历热图。"""
    fig, ax = new_fig(left=0.20, bottom=0.22, right=0.86)
    rng = np.random.default_rng(3805)
    M = np.full((7, 53), np.nan)
    for d in range(365):
        wd, wk = d % 7, min(d // 7, 52)
        base = 0.55 + 0.25 * np.cos((d - 200) / 365 * 2 * np.pi)
        M[wd, wk] = max(0, rng.poisson(base))
    im = ax.imshow(M, aspect="auto", cmap=CMAP_SEQ, vmin=0, vmax=3)
    ax.set_yticks(range(7))
    ax.set_yticklabels(["一", "二", "三", "四", "五", "六", "日"])
    ax.set_xticks([0, 8, 17, 26, 35, 44, 52])
    ax.set_xlabel("周序")
    ax.set_ylabel("星期")
    cbar(fig, ax, im, "故障次数")
    save(fig, "38_日历热图", "38_日历热图_故障次数")

说明

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