I'm trying to do a plot with ggplot2
and trying to put labels at the right place on mean trajectories with confidence regions. Since I cannot share my data, I created a reproducible example:
set.seed(456)
library(ggplot2)
library(directlabels)
time<-1:25
df2<-data.frame(time,value=runif(2500),group=as.factor(c(rep('Alpha',1250),rep('Beta',1250))))
ggplot(df2, aes(x=time, y=value,group=group,colour=group))+
stat_summary(geom="ribbon", fun.data=mean_cl_normal,fun.args=list(conf.int=0.95), fill="grey")+
stat_summary(geom="line", fun=mean,size=2,show.legend=TRUE)+
stat_summary(geom="point", fun=mean, color="red",size=3)+
theme(legend.position='none',axis.title=element_text(size=40),
axis.text=element_text(size=30),panel.background = element_blank(),axis.line =
element_line(colour = 'black'))+
geom_dl(aes(label = group),method=list(dl.combine('first.qp','last.qp')),color='black')
As you can see, the labels are completely wrong. I'm trying to put the labels next to the first mean point and/or next to the last mean point. With my data, the result is worse: both labels are under the lower trajectory and both overlapped. I also get the following warning
:
┌ Warning: RCall.jl: Warning in regularize.values(x, y, ties, missing(ties)) :
│ collapsing to unique 'x' values
│ Warning in regularize.values(x, y, ties, missing(ties)) :
│ collapsing to unique 'x' values
│ Warning in regularize.values(x, y, ties, missing(ties)) :
│ collapsing to unique 'x' values
│ Warning in regularize.values(x, y, ties, missing(ties)) :
│ collapsing to unique 'x' values
How can I solve my problem and put the labels next to the first/last mean values of each trajectory? I tried to change the method
option but with no success... As the plotted points are means, the methods with .points
don't work. Moreover, how can I control the size of labels?
I tried another ggplot2
code:
ggplot(df2, aes(x=time, y=value,group=group,colour=group))+
stat_summary(geom="ribbon", fun.data=mean_cl_normal,
fun.args=list(conf.int=0.95), fill="grey")+
stat_summary(geom="line", fun=mean,size=2,show.legend=TRUE)+
stat_summary(geom="point", fun=mean, color="red",size=3)+
theme(legend.position = 'none',axis.title=element_text(size=40),
axis.text=element_text(size=30),panel.background =
element_blank(),axis.line = element_line(colour =
'black'))+
stat_summary(aes(label=group), fun=mean, geom="text", size=8)
and I obtain the following plot:
I think I'm close with this last plot, if I can keep only the first and/or last labels.