You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Seaborn的countplot中添加hue后图表显示异常的解决方法

解决Seaborn countplot添加hue后的对齐与显示异常问题

问题根源

添加hue参数后,原代码用hosp_sat['HOSPITAL'].value_counts().index作为order,这个排序基于所有医院的总记录数,但countplot加hue后会把每个医院的条形按hue(医院规模)拆分,原order未适配这种分组结构,导致y轴条形错位;另外仅给第一个容器加标签会漏显示其他分组的标签(你已通过循环容器解决标签问题,以下重点解决对齐)。

完整修复代码

import matplotlib.pylab as plt
import seaborn as sns 

# 按医院总记录数排序,得到有序医院列表
sorted_hospitals = hosp_sat['HOSPITAL'].value_counts().index

plt.figure(figsize=(10,8))
ax = sns.countplot(
    y=hosp_sat["HOSPITAL"], 
    hue=hosp_sat['Hospital_size'], 
    order=sorted_hospitals,
    hue_order=['small', 'medium', 'big']  # 可选:固定规模显示顺序,避免自动排序混乱
)

# 遍历所有容器添加标签
for container in ax.containers:
    ax.bar_label(container)

plt.tight_layout()  # 调整布局,防止标签/名称被截断
plt.show()

关键调整点

  • 修正order逻辑:保留按总记录数排序医院的逻辑,countplot会自动将每个医院的不同规模条形对齐到对应y轴位置,解决错位问题。
  • 指定hue_order(可选):若Hospital_size是分类变量,指定该参数可固定规模显示顺序,避免Seaborn自动按字母排序导致的混乱。
  • 布局优化:添加plt.tight_layout()防止图表边缘截断标签或医院名称。

额外说明

你怀疑的重复记录不是问题,countplot本身就是统计(医院+规模)组合的出现次数,重复记录属于正常统计样本。只需确保医院名称和规模取值无拼写错误(比如大小写、空格差异),就不会影响结果。

内容的提问来源于stack exchange,提问作者Armonia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:40:17