[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