我一直在用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')
谢谢!
答案 0 :(得分:0)
我有同样的问题。我发现,xticklabels仅与x组有关,而在每个x组中没有色相组。
因此一个简单而残酷的武力解决方案是,在组织输出字符串的地方,可以在一个位置而不是一次输出色相组。所有数字都可以写在图形的顶部或底部,即固定的y位置,而不必放在中位数所在的位置。