Метки крайних значений ggplot2 в geom_boxplot

Я пытаюсь добавить метки к geom_boxplot для экстремальных значений с помощью dplyr и получаю несоответствие либо с 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)

person yonicd    schedule 18.09.2014    source источник
comment
Результат мне кажется хорошим: о каком несоответствии вы говорите? (Если вы имеете в виду тот факт, что точки рисования не выходят за пределы усов графика, это потому, что вы не вычисляете эти точки так же, как это делает ggplot2)   -  person David Robinson    schedule 18.09.2014
comment
Вы можете использовать boxplot.stats вместо quantile для определения экстремальных значений.   -  person Roland    schedule 18.09.2014


Ответы (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)
person yonicd    schedule 18.09.2014