【问题标题】:extreme value labels ggplot2 in geom_boxplotgeom_boxplot 中的极值标签 ggplot2
【发布时间】:2014-09-18 10:55:06
【问题描述】:

我正在尝试使用 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)

【问题讨论】:

  • 输出对我来说看起来不错:您指的是什么不一致? (如果您指的是绘制点不超出情节的胡须,那是因为您没有像 ggplot2 那样计算这些点)
  • 您可以使用boxplot.stats 而不是quantile 来识别极值。

标签: r ggplot2 boxplot dplyr geom-text


【解决方案1】:

这是解决问题的方法:

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)

【讨论】:

    猜你喜欢
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2012-05-17
    • 1970-01-01
    相关资源
    最近更新 更多