[R] Insert segment only on particular facets in ggplot

John Kane jrkrideau at inbox.com
Fri Jan 25 16:33:24 CET 2013


The image came through but no data.  I'd suggest using ?dput to send the data.

John Kane
Kingston ON Canada


> -----Original Message-----
> From: janesh.devkota at gmail.com
> Sent: Thu, 24 Jan 2013 11:46:53 -0600
> To: r-help at r-project.org
> Subject: [R] Insert segment only on particular facets in ggplot
> 
> Dear R users,
> 
> I am working on a data-set with 3 species. They are apple, orange and
> banana.
> 
> I want to annotate the facets only on the bottom panel. However, by
> default
> I am getting annotations on all the plots. I was able to get text
> annotation only on the desired plot. However, I am confused what I need
> to
> do for the arrows / segments.
> 
> Here is my code:
> 
> library(ggplot2)
> library(grid)
> 
> tempobs <- read.csv("temp data share.csv",header=T, sep=",")
> p1 <-
> ggplot(tempobs,aes(x=time,y=data))+geom_point(data=tempobs,aes(x=time,y=data,colour=group1))+facet_wrap(~id,ncol=1)+theme_bw()
> p1 <- p1 + xlab("Julian Day
> (2008-2009)")+ylab(expression(Temperature~(degree*C)))+ element_blank()+
> theme(
>     legend.position="right",
>     legend.direction="vertical",
>     legend.title = element_blank())
> +coord_cartesian(xlim=c(250,550))+coord_cartesian(ylim=c(0,40))+scale_x_continuous(breaks=c(250,300,350,400,450,500,550),labels=c("250","300","350","34","84","134","184"))
> p1
> 
> ### This is how it should look like (though shows annotations for all the
> plots)
> p +
> annotate("text",x=340,y=3,label="2008",size=3)+annotate("segment",x=366,xend=366,y=0,yend=2,size=0.5)+annotate("text",x=390,y=3,label="2009",size=3)+annotate("segment",x=366,xend=310,y=1,yend=1,size=0.5,arrow=arrow(length=unit(0.2,"cm")))+annotate("segment",x=366,xend=420,y=1,yend=1,size=0.5,arrow=arrow(length=unit(0.2,"cm")))
> 
> 
> ### This is what I did to show text annotation on the bottom panel
> ann_text <-
> data.frame(x=c(340,390),y=c(3,3),id=c("orange"),label=c("2008","2009"))
> p1 <- p1 +
> geom_text(data=ann_text,aes(x=x,y=y,label=label,size=3),show_guide=F)
> p1
> 
> 
> Now, I want to add the arrows and segment based on the overall graph.
> 
> My data is attached along.
> 
> My output is also attached :
> 
> The output shows the annotation I want but it is on all the facets. I
> want
> only on the bottom one.
> 
> Thank you so much.
> 
> Regards,
> Janesh Devkota
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

____________________________________________________________
FREE ONLINE PHOTOSHARING - Share your photos online with your friends and family!
Visit http://www.inbox.com/photosharing to find out more!



More information about the R-help mailing list