matplotlib 海运箱形图中的图例破坏了与重叠群集图的对齐[重复]

7z5jn7bk  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(125)

此问题在此处已有答案

How can box plot be overlaid on top of swarm plot in Seaborn?(3个答案)
seaborn boxplot and stripplot points aren't aligned over the x-axis by hue(1个答案)
14小时前关门了。
编辑:在此解决
seaborn boxplot and stripplot points aren't aligned over the x-axis by hue
在上述情况下,swarmplot在叠加中移动,并且通过在swarmplot中设置dodge = true来实现分辨率。
这里,箱线图被移动,分辨率通过在条形图中设置dodge = False来实现。
我有一个与seaborn swarmplot重叠的seaborn箱线图。每当我向箱线图添加标签时,图例都会重新定位箱线图,而不会调整swarmplot(图1)。

sns.swarmplot(x = 'data_type', y = 'count', data = df, 
                   alpha = .5, palette='colorblind', hue='data_type', legend = 0, zorder=0.5)

ax = sns.boxplot(x = 'data_type', y = 'count', data = df,
                 palette='colorblind', showfliers = 0, hue = 'data_type')

plt.legend(bbox_to_anchor = (1.02, 1), loc = 'upper left')

如果我删除标签,通过省略hue = 'data_type',那么我就有了我想要的对齐(图2)。

如何在保持对齐的同时显示箱线图图例?

zf2sa74q

zf2sa74q1#

看起来你需要在调用boxplot函数时设置dodge=False。更多信息请参见文档here,并参见下面的代码:

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")
fig,ax=plt.subplots()
sns.swarmplot(data=tips,x="day",y="total_bill",hue='day',legend=0,ax=ax)
sns.boxplot(data=tips,x="day", y="total_bill",hue='day',showfliers = 0,ax=ax,dodge=False)
plt.legend(bbox_to_anchor = (1.02, 1), loc = 'upper left')

相关问题