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

在Seaborn 0.12.2版本中按hue变量为箱线图离群点着色

Seaborn 0.12.2版本箱线图离群点按hue着色解决方案

在Seaborn 0.12.2中,使用hue参数绘制箱线图时,离群点默认不会按hue类别着色,统一为单一颜色。以下是无需升级版本的手动调整方案,以tips数据集为例:

实现步骤与代码

import seaborn as sns
import matplotlib.pyplot as plt

# 加载示例数据集
tips = sns.load_dataset("tips")

# 绘制带hue的箱线图,保存Axes对象
ax = sns.boxplot(x="day", y="total_bill", hue="sex", data=tips)

# 获取hue类别及对应调色板颜色
hue_cats = tips["sex"].unique()
n_hue = len(hue_cats)
# 匹配Seaborn默认调色板颜色
palette = sns.color_palette()[:n_hue]

# 遍历每个箱线元素,为对应离群点着色
for idx, artist in enumerate(ax.artists):
    # 计算当前箱线对应的hue分组索引
    hue_idx = idx % n_hue
    target_color = palette[hue_idx]
    
    # 定位当前箱线对应的离群点:每个箱线对应6条线(2 whiskers、2 caps、1 median、1 flier)
    flier_line = ax.lines[idx * 6 + 5]
    # 设置离群点的标记边缘色和填充色
    flier_line.set_markeredgecolor(target_color)
    flier_line.set_markerfacecolor(target_color)

plt.show()

关键逻辑说明

  1. 获取颜色映射:通过sns.color_palette()获取Seaborn默认调色板颜色,确保与箱线主体颜色一致。
  2. 遍历箱线元素:ax.artists存储了所有箱线的矩形对象,每个对象对应一个x类别下的hue分组。
  3. 定位离群点:每个箱线对应6条线条元素(上下须线、上下帽线、中位数线、离群点线),通过索引计算精准定位到离群点线条。
  4. 设置颜色:将离群点的标记边缘色和填充色设置为对应hue分组的颜色。

注意事项

  • 如果指定了hue_order参数,需将hue_cats替换为自定义的顺序列表,确保颜色匹配正确。
  • 若使用自定义调色板,直接将palette替换为自定义颜色列表即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:42:37