首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将观测值添加到水平箱线图出海

将观测值添加到水平箱线图出海
EN

Stack Overflow用户
提问于 2020-09-14 00:14:35
回答 1查看 1.2K关注 0票数 0

我想在海上的水平箱形图中添加观察值(nobs)的数量-理想情况下在胡须上方,如果不可能,则在中值旁边。这两个职位中任何一个的替代方案也可以,但最不可取。

为此,我尝试改编来自其他地方的代码(https://python-graph-gallery.com/38-show-number-of-observation-on-boxplot/),展示如何对垂直框图执行此操作,但在将其改编为水平框图时遇到了困难。

到目前为止,这是我的尝试:

代码语言:javascript
复制
df = sns.load_dataset("iris")

ax = sns.boxplot(y="species", x="sepal_length", data=df)
 
# Calculate number of obs per group & median to position labels
medians = df.groupby(['species'])['sepal_length'].median().values
nobs = df['species'].value_counts().values
nobs = [str(x) for x in nobs.tolist()]
nobs = ["n: " + i for i in nobs]
 
# Add it to the plot
pos = range(len(nobs))
for tick,label in zip(pos,ax.get_xticklabels()):
 ax.text(pos[tick], medians[tick],nobs[tick],
         color='black', verticalalignment = "bottom")

sns.despine()

plt.show();

结果显示了箱形图之外的观察值(nobs)的数量-请参见下图的左下角。

如何以编程方式将(nobs)移动到问题顶部所述的图形中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-14 01:15:22

基于@JohanC的评论,它工作得很好。请检查代码片段

代码语言:javascript
复制
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset("iris")
ax = sns.boxplot(y="species", x="sepal_length", data=df) 
medians = df.groupby(['species'])['sepal_length'].median().values
nobs = df['species'].value_counts().values
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_yticklabels()):
    ax.text(medians[tick],tick,nobs[tick],color='black', verticalalignment = "bottom")
sns.despine()
plt.show();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63872880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档