我如何计算和放置每个按色相划分的海洋箱图的观测值数量?

时间:2019-11-18 15:02:46

标签: python-3.x seaborn

我一直在用seaborn开发箱形图,并试图添加指示每个箱形图有多少观察值的指示。

This article很不错,this answer确实很有帮助,并且使我受益匪浅,但是,我还不了解Paul H关于如何使用'hue'的评论。进一步拆分观察值计算和打印(根据Paul的说法,这是“单独传递色相列”的基本情况,在它们指定的示例中是不同的)。

我已将色相(“条件”)添加到groupby中,但是似乎没有做任何事情。

#set palette for different hues    
my_pal = {"Year A": "r", "Year B": "B"}

#setup graph    
plt.figure(figsize=(16, 10))
    ax = sns.boxplot(x='variable', y="value", hue="Condition", showmeans=True, data=df, palette=my_pal, meanprops={"marker":"s","markerfacecolor":"white", "markeredgecolor":"black"})
    plt.ylabel("Temperature (\xb0C)")
    plt.xlabel("Zone")

medians = df.groupby(['variable','Condition'])['value'].median().values
nobs = df.groupby(['variable','Condition']).size()
nobs = [str(x) for x in nobs.tolist()]
nobs = ["n: " + i for i in nobs]

pos = range(len(nobs))
for tick,label in zip(pos,ax.get_xticklabels()):
    ax.text(pos[tick], medians[tick] + 0.03, nobs[tick],
    horizontalalignment='center', size='x-small', color='b', weight='semibold')

谢谢!

enter image description here

1 个答案:

答案 0 :(得分:0)

我有同样的问题。我发现,xticklabels仅与x组有关,而在每个x组中没有色相组。

因此一个简单而残酷的武力解决方案是,在组织输出字符串的地方,可以在一个位置而不是一次输出色相组。所有数字都可以写在图形的顶部或底部,即固定的y位置,而不必放在中位数所在的位置。