Hello, I asked a similar question before but in an existing thread. I am not sure if it is proper etiquette to repost a similar question as a new tread, I think in this case, it might be because this way more people can see it and perhaps learn from it. (Also, part of the existing thread became private)
I want to know how to plot multiple ggplot area plots on top of one another so that the same x-axis is shared? This solution simply stitches multiple plots on top of each other: vp.layout <- function(x, y) viewport(layout.pos.row=x, layout.pos.col=y) arrange <- function(..., nrow=NULL, ncol=NULL, as.table=FALSE) { dots <- list(...) n <- length(dots) if(is.null(nrow) & is.null(ncol)) { nrow = floor(n/2) ; ncol = ceiling(n/nrow)} if(is.null(nrow)) { nrow = ceiling(n/ncol)} if(is.null(ncol)) { ncol = ceiling(n/nrow)} ## NOTE see n2mfrow in grDevices for possible alternative grid.newpage() pushViewport(viewport(layout=grid.layout(nrow,ncol) ) ) ii.p <- 1 for(ii.row in seq(1, nrow)){ ii.table.row <- ii.row if(as.table) {ii.table.row <- nrow - ii.table.row + 1} for(ii.col in seq(1, ncol)){ ii.table <- ii.p if(ii.p > n) break print(dots[[ii.table]], vp=vp.layout(ii.table.row, ii.col)) ii.p <- ii.p + 1 } } } set <- read.table(file="http://www.jovian.nl/set.csv", head=1, sep=",") set2 <- read.table(file="http://www.jovian.nl/set2.csv", head=1, sep=",") library(ggplot2) s <- ggplot(set, aes(x = time, y = hours)) + geom_area(colour = 'red', fill = 'red', alpha = 0.5) + geom_area(stat = 'smooth', span = 0.2, alpha = 0.3) + ylim(0,40) s1 <- ggplot(set2, aes(x = time, y = hours)) + geom_area(colour = 'red', fill = 'red', alpha = 0.5) + geom_area(stat = 'smooth', span = 0.2, alpha = 0.3) + ylim(0,40) arrange(s,s1,ncol=1) The arrange() function was taken from http://gettinggeneticsdone.blogspot.com/2010/03/arrange-multiple-ggplot2-plots-in-same.html. In this example, the x-axes are only similar because the data sets have the same range. In effect nothing more happens than that two images are plotted on top of one another. Now how to "merge" these two (and later more) area plots on top of each other so that they share the same x-axis (so that only one x-axis would be necessary on the bottom of the plot)? Thanks, Werner -- View this message in context: http://r.789695.n4.nabble.com/Multiple-area-plots-to-share-the-same-x-axis-tp3414050p3414050.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@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.