[R] Overlaying two graphs using ggplot2 in R

Duncan Mackay dulcalma at bigpond.com
Tue Jan 28 04:28:12 CET 2014


Hi Kristi

Jim has given you 1 non ggplot2 solution here is one from lattice
panel.average is a line so added a line for points

# convert site to a factor
dat1$Site = factor(dat1$Site)

 datav <- aggregate(Present ~ Site, dat1,mean)
 datav
 diff(datav[,2]) # test
 
 bw1 <-
 bwplot(Present~Site,data=subset(dat1, layer == "top"),
        ylim = c(0,200),
        panel = function(x,y,...){
                  panel.bwplot(x,y,...)
                  panel.average(x=x,y=y,...)
                  })
                  
 bw2<-
 bwplot(Present~Site,data=subset(dat1, layer == "bottom"),
        ylim = c(0,200),
        panel = function(x,y,...){

                  panel.bwplot(x,y,...)
                  # overall mean if needed
                  panel.average(dat1[,"Site"], dat1[,"Present"], ...)
                  })

print(bw1, more = T)
print(bw2, more = F)

Duncan

Duncan Mackay
Department of Agronomy and Soil Science
University of New England
Armidale NSW 2351
Email: home: mackay at northnet.com.au

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of Kristi Glover
Sent: Monday, 27 January 2014 21:13
To: R-help
Subject: [R] Overlaying two graphs using ggplot2 in R

Hi R Users,
I was struggling to overlay two graphs created from the two different
dataset using ggplot2. Furthermore, I could not join means of the box plots.

I tried this way but did not work. Any suggestions?
dat1<-structure(list(site = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 
2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), layer = structure(c(2L, 
2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 
1L, 1L), .Label = c("bottom", "top"), class = "factor"), Present = c(120L, 
125L, 123L, 23L, 21L, 19L, 131L, 124L, 127L, 24L, 27L, 25L, 145L, 
143L, 184L, 29L, 14L, 17L, 38L)), .Names = c("site", "layer", 
"Present"), row.names = c(NA, 19L), class = "data.frame")
dat1
dat2<-structure(list(site = 1:3, present = c(-3L, 2L, 5L)), .Names =
c("site", 
"present"), row.names = c(NA, 3L), class = "data.frame")
dat2
library("plyr")
library(ggplot2)
A<-ggplot(dat1, aes(x = factor(site), y = Present, colour = layer,
fill=layer)) + 
    geom_boxplot(outlier.shape = 16, outlier.size = 1)  + theme_bw()+
ylim(0,185)
# Here I wanted to join the means of the boxplots among the sites, but I
could not join it.
B<-ggplot(dat2, aes(x=factor(site),y= present, colour="blue") + 
     geom_line() + geom_point()) # wanted to plot it using second y axis. 
A+B
Thanks for your help.
KG


 		 	   		  
	[[alternative HTML version deleted]]

______________________________________________
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.




More information about the R-help mailing list