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

如何在Seaborn中将stripplot置于boxplot下方(默认在上层)

解决stripplot显示在boxplot上层的问题

要让stripplot(散点条图)显示在boxplot(箱线图)下方,核心是控制两个图层的z轴顺序(zorder)——数值越大的图层会显示在更上层。你遇到的问题是因为seaborn默认的zorder设置,导致即使调换绘图顺序,boxplot的元素(尤其是你要保留的均值标记)依然会被压在下方,或者stripplot的zorder更高。

具体修改方案

调整代码的绘图顺序,并为两个绘图函数显式设置zorder参数,同时处理重复图例的问题:

fig, axs = plt.subplots(nrows=1, ncols=1, figsize=(5, 4), dpi=200)
# 先画stripplot,设置zorder为0(底层),关闭图例避免重复
sns.stripplot(ax=axs, data=df, x='region', y='measure', hue='group',
              dodge=True, jitter=0.05, zorder=0, legend=False)
# 再画boxplot,设置整体zorder为1,同时给均值标记单独设置更高的zorder(确保在散点上方)
sns.boxplot(ax=axs, data=df, x='region', y='measure', hue='group',
            meanprops={'marker' : 'D', 'markeredgecolor' : 'black', 'markersize' : 6, 'zorder': 2},
            medianprops={'visible': False}, whiskerprops={'visible': False},
            showmeans=True, showfliers=False, showbox=False, showcaps=False, zorder=1)
plt.show()

关键说明

  • 先绘制stripplot并设置zorder=0,让它作为底层图层;
  • 后绘制boxplot,设置zorder=1,同时给均值标记的meanprops里加上zorder=2,确保菱形均值标记能清晰显示在散点上方;
  • 给stripplot加上legend=False,避免生成重复的图例,只保留boxplot的图例即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:25:31