16 频次柱状 countplot

16 频次柱状 countplot

这类图是什么

直接按类别计数画柱,不用先汇总。

看什么:看各类别的出现次数,如故障类型、缺陷等级分布。

5 个案例

16-1 各类故障的次数统计:countplot 直接计数,不用先汇总

各类故障的次数统计:countplot 直接计数,不用先汇总

16-2 按季节分组的故障类型次数:hue 自动分组并错位

按季节分组的故障类型次数:hue 自动分组并错位

16-3 停电时户数按类型统计

停电时户数按类型统计

16-4 各电压等级设备数量统计

各电压等级设备数量统计

16-5 检查发现的缺陷等级分布

检查发现的缺陷等级分布

代码

5 个函数取自 code/第三批_类别图261107.py。关键约束:不调用 sns.set_theme(),否则 font.family 被改成 Arial,中文会变方框;版式由 code/公共配置261107.py 里的 setup_cn_style() 与 save() / save_grid() 统一接管。

# 摘自 code/第三批_类别图261107.py

def cp_01():
    """各类故障的次数统计:countplot 直接计数,不用先汇总。"""
    fig, ax = new_fig(left=0.22, bottom=0.22)
    data = ["外力破坏"] * 126 + ["设备老化"] * 98 + ["雷击"] * 64 \
        + ["过负荷"] * 38 + ["施工质量"] * 26 + ["其他"] * 14
    df = pd.DataFrame({"原因": data})
    sns.countplot(data=df, x="原因", hue="原因", palette=PALETTE5,
                  width=0.6, linewidth=0.5, legend=False, ax=ax)
    ax.set_xlabel("故障原因")
    ax.set_ylabel("故障次数")
    ax.set_ylim(0, 145)
    save(fig, "16_频次柱状", "16_频次柱状_故障原因统计")

def cp_02():
    """按季节分组的故障类型次数:hue 自动分组并错位。"""
    fig, ax = new_fig(left=0.22, bottom=0.22)
    rng = np.random.default_rng(1602)
    rows = []
    for season, w in [("春夏", 1.0), ("秋冬", 0.7)]:
        for cause, n in [("外力", 60), ("老化", 45), ("雷击", 30), ("过负荷", 20)]:
            rows += [(cause, season)] * int(n * w * rng.uniform(0.8, 1.2))
    df = pd.DataFrame(rows, columns=["原因", "季节"])
    sns.countplot(data=df, x="原因", hue="季节", palette=[C5, C3],
                  width=0.62, linewidth=0.5, ax=ax)
    ax.set_xlabel("故障原因")
    ax.set_ylabel("故障次数")
    ax.set_ylim(0, 78)
    legend_in(ax, "upper right", ncol=2)
    save(fig, "16_频次柱状", "16_频次柱状_分季节故障")

def cp_03():
    """停电时户数按类型统计。"""
    fig, ax = new_fig(left=0.22, bottom=0.22)
    data = ["计划检修"] * 186 + ["故障停电"] * 142 + ["限电"] * 88 \
        + ["临时施工"] * 54 + ["用户侧"] * 32
    df = pd.DataFrame({"类型": data})
    sns.countplot(data=df, x="类型", hue="类型", palette=PALETTE5,
                  width=0.6, linewidth=0.5, legend=False, ax=ax)
    ax.set_xlabel("停电类型")
    ax.set_ylabel("停电时户数 / 百户·h")
    ax.set_ylim(0, 205)
    save(fig, "16_频次柱状", "16_频次柱状_停电类型统计")

def cp_04():
    """各电压等级设备数量统计。"""
    fig, ax = new_fig(left=0.19)
    data = ["10 kV"] * 128 + ["380 V"] * 96 + ["220 V"] * 62 + ["35 kV"] * 24
    df = pd.DataFrame({"电压等级": data})
    sns.countplot(data=df, x="电压等级", hue="电压等级", palette=PALETTE4,
                  width=0.56, linewidth=0.5, legend=False, ax=ax)
    ax.set_xlabel("电压等级")
    ax.set_ylabel("设备数量 / 台")
    ax.set_ylim(0, 145)
    save(fig, "16_频次柱状", "16_频次柱状_各电压等级设备")

def cp_05():
    """检查发现的缺陷等级分布。"""
    fig, ax = new_fig(left=0.19)
    data = ["一般"] * 92 + ["严重"] * 46 + ["危急"] * 18
    df = pd.DataFrame({"等级": data})
    sns.countplot(data=df, x="等级", hue="等级", palette=[C5, C3, C2],
                  width=0.5, linewidth=0.5, legend=False, ax=ax)
    ax.set_xlabel("缺陷等级")
    ax.set_ylabel("缺陷数量 / 项")
    ax.set_ylim(0, 108)
    save(fig, "16_频次柱状", "16_频次柱状_缺陷等级分布")

说明

  • axes 级图 1181×944 px;figure 级多轴图按内容取 1100~1470 px 宽。
  • 图内不放标题,图题由本文件的标题承担。
  • 数据为 10 kV 配网、380 V 低压、50 Hz 量级的仿真算例,随机种子固定。
posted @ 2026-11-08 08:32  小青蛙电气  阅读(2)  评论(0)    收藏  举报