Python:swarm图覆盖了方框图中的中间线

Python:swarm图覆盖了方框图中的中间线,python,matplotlib,seaborn,swarmplot,Python,Matplotlib,Seaborn,Swarmplot,在方框图上绘制swarm图(seaborn)时,点可能会覆盖方框图的中线。 我怎样才能使swarm图的点更加透明,这样我也可以看到长方体图的中间点 在图中,我们看不到中间线,因为它被圆点覆盖,所以,从光学角度看,我不知道中间线在第二个框中的位置。是否有可能使swarm绘图的点更加透明,以便我也能看到中间线 例如: fig, axes = plt.subplots(nrows=1, ncols=1,figsize=(6,2)) data = pd.DataFrame({'a':[3,3,3,3,4

在方框图上绘制swarm图(seaborn)时,点可能会覆盖方框图的中线。 我怎样才能使swarm图的点更加透明,这样我也可以看到长方体图的中间点

在图中,我们看不到中间线,因为它被圆点覆盖,所以,从光学角度看,我不知道中间线在第二个框中的位置。是否有可能使swarm绘图的点更加透明,以便我也能看到中间线

例如:

fig, axes = plt.subplots(nrows=1, ncols=1,figsize=(6,2))
data = pd.DataFrame({'a':[3,3,3,3,4,5,6,8,11,11,8,7,7,7,7,7,7,3,3,3,3,3,7,7,7,7,7,7,7,7,7,7,7,8,9,10,11,12,11,11,11]})
sns.boxplot(x='a',data=data, ax = axes)
ax = sns.swarmplot(x='a', data=data, color = 'grey', ax = axes)
(不可选择放大数字)


我直接想到两个选项:

  • 使Swarmlot半透明。这可以通过添加
    alpha
    参数来实现,例如,对于半透明,alpha=0.5。当然,背景中的条越暗,点越不可见(因此我在这里将其设为黄色)

  • 在Swarmlot点顶部显示中线。这可以通过通过
    medianprops
    关键字参数传递的字典指定medianline的
    zorder
    来实现

    sns.boxplot(x='a',data=data, ax = axes, color="gold", medianprops={"zorder":3})
    

    在这种情况下,通过
    medianprops={“zorder”:3,“alpha”:0.6}
    使中间线半透明也是同样可能的

当然,这两个选项的任何组合也会有所帮助

sns.boxplot(x='a',data=data, ax = axes, color="gold", medianprops={"zorder":3})