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

如何在seaborn figure-level箱线图上叠加数据点

解决方案

你之前出现上下分开展示的原因是两次绘图分别创建了独立的画布/子图对象,没有在同一个子图坐标系内渲染两类图形。
你可以直接调用factorplot(新版本Seaborn已废弃该接口,推荐用catplot,参数逻辑完全一致)返回的FacetGrid对象的map方法,在每个子图的箱线图层上叠加stripplot散点,核心是保证散点和箱线的x轴分类顺序一致,同时设置散点透明度和抖动避免遮挡箱线信息。

首先补全原代码中缺失的依赖导入:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

然后把绘图部分的代码替换为如下内容即可:

# 绘制箱线图,将返回的FacetGrid对象赋值给g
g = sns.catplot(x="week", y="value", col="variable", data=df1, kind="box")
# 为每个子图叠加散点
g.map(sns.stripplot, 
      'week', 'value', 
      color='darkgray', # 散点颜色,避免和箱线颜色冲突
      size=3, 
      alpha=0.7, # 半透明避免遮挡
      jitter=0.15, # 轻微抖动避免同值点重叠
      order=sorted(df1['week'].unique())) # 保证x轴顺序和箱线完全一致
plt.show()

如果你的Seaborn版本较老仍然要使用factorplot,只需要把上面的catplot替换回factorplot即可,其余逻辑完全相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:54:00