geom_boxplot中的极值标签

时间:2015-05-21 11:19:07

标签: r ggplot2 plyr boxplot geom-text

我正在尝试在geom_box图上添加极值(异常值或非异常值)的标签。 我发现了这个问题,几乎与我的[extreme value labels ggplot2 in geom_boxplot]完全相似 yonicd提供的答案几乎对我有用:

df=rbind(data.frame(id=rep("1",100),var=paste0("V",seq(1,100)),
         val=rnorm(100,0,5)),
         data.frame(id=rep("2",100),var=paste0("V",seq(1,100)),
         val=rnorm(100,0,3)))


df_bound=df%.%group_by(id)%>%do(.,data.frame(val=boxplot.stats(.$val)$out))
df_bound=left_join(df_bound, df, by=c("id","val"))

ggplot(df,aes(x=id, y=val, fill=id, label=var)) + geom_boxplot() +
geom_point(aes(group=id), data=df_bound)+
geom_text(aes(group=id), data=df_bound, hjust=-1, size=4)

很明显,我只需要替换

中的[$ out]
 df_bound=df%.%group_by(id)%>%do(.,data.frame(val=boxplot.stats(.$val)$out))

拥有极值而不是异常值。 如果我使用

df_bound=df%.%group_by(id)%>%do(.,data.frame(val=boxplot.stats(.$val)$stats))

异常值的标签不会出现。 如果能解决这个问题怎么办?

1 个答案:

答案 0 :(得分:0)

因此代码适用于最新版本的dplyr:将%.%运算符更改为magrittr管道%>%。添加了[c(1,5)],它在boxplot.stats $ stats中设置了胡须的“低”和“高”极值。

df_bound <- df%>%group_by(id)%>%do(.,data.frame(val=boxplot.stats(.$val)$stats[c(1,5)]))