当 showmeans 设置为 True 时,如何为 sns.boxplot() 中的平均值添加标签?

问题描述 投票:0回答:1

我使用seaborn和matplotlib创建了一个箱线图,并通过将showmeans设置为true来添加方法,如下所示:

sns.boxplot(data=df, x="Job", y="Age", order=ylabels, showmeans=True)
然而,手段并没有出现在传说中。我希望它们出现在图例中,这样它们就不仅仅是随机点。

我尝试的第一件事是显而易见的:

plt.legend()
这没有产生任何变化。然后我尝试改变meanprops值,但这并没有改变任何东西。我还使用子图创建了一个单独的可视化,为平均值创建另一个数据集并将其分层。我没有投入大量时间,因为我知道只要进行足够的修补,我就能让它发挥作用。但这不是我的问题,我试图避免这样做。

python matplotlib jupyter-notebook seaborn boxplot
1个回答
0
投票

sns.boxplot()
接受
ax.boxplot()
的大部分参数。这些参数之一是
showmeans=
。另一个是
meanprops=
,它是一个改变平均值的属性字典。这些属性之一是
label

不幸的是,通过

label
设置
meanprops
会将标签分配给每个方法。如果有 4 个箱线图,平均值将在图例中出现 4 次。您可以通过
ax.get_legend_handles_labels()
获取图例的句柄和标签列表,并且仅使用其中的一部分。如果图例中有其他元素,则需要调整代码。

import matplotlib.pyplot as plt
import seaborn as sns

tips = sns.load_dataset('tips')
sns.set_style('white')
ax = sns.boxplot(data=tips, x='day', y='tip', color='salmon',
                 showmeans=True, meanprops={'label': 'mean'})
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles[:1], labels[:1])
plt.show()

© www.soinside.com 2019 - 2024. All rights reserved.