我正在尝试使用dplyr为geom_boxplot添加标签以获取极值,并且与ggplot或dplyr会出现不一致。我做错了什么?
#toy exmaple
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)))
#subset with extreme values
df_bound=df%.%group_by(id)%.%filter(val<quantile(val,.025)|val>quantile(val,.975))
#plot
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)
答案 0 :(得分:2)
这是解决问题的方法:
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)))
#new code
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)