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

如何调整seaborn散点图数据点透明度 解决stroke=1点被stroke=0遮挡问题

散点图类别遮挡问题解决方法

你可以通过以下几种方案解决stroke=1的点被遮挡的问题:

  • 调整绘图顺序,将stroke=1的点放在上层绘制
    可以通过指定hue_order参数,让stroke=0先绘制,stroke=1后绘制,后者自然会覆盖在上层:
sns.scatterplot(x = df.Age, y=df.Bmi, hue = df.Stroke, hue_order=[0,1])

如果想要更灵活的控制,也可以拆分数据集分别绘制:

# 先绘制stroke=0的点
sns.scatterplot(x = df[df.Stroke==0].Age, y=df[df.Stroke==0].Bmi, color = '#1f77b4')
# 再绘制stroke=1的点
sns.scatterplot(x = df[df.Stroke==1].Age, y=df[df.Stroke==1].Bmi, color = '#ff7f0e')
  • 增加点的透明度,让重叠区域的层级更明显
    给所有点设置统一的透明度,即使被遮挡也能看出下层的点分布:
sns.scatterplot(x = df.Age, y=df.Bmi, hue = df.Stroke, alpha=0.6)
  • 给stroke=1的点增加样式区分
    可以给stroke=1的点设置更大的尺寸、或者白色描边,更容易和下层的stroke=0的点区分开:
# 按stroke类别设置不同点大小+描边
sns.scatterplot(x = df.Age, y=df.Bmi, hue = df.Stroke, size=df.Stroke, sizes=[20, 60], edgecolor='white')
  • 分面绘制两个类别
    直接将两个类别的散点图分成两个子图绘制,完全避免遮挡问题:
sns.relplot(x = 'Age', y='Bmi', hue = 'Stroke', col='Stroke', data=df, kind='scatter')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:39:03