[R] Multiple area plots to share the same x-axis
Ista Zahn
izahn at psych.rochester.edu
Wed Mar 30 17:35:18 CEST 2011
Use facetting:
sets <- rbind(cbind(set="set1", set), cbind(set="set2", set2))
ggplot(sets, 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) +
facet_grid(set ~ .)
Best,
Ista
On Wed, Mar 30, 2011 at 10:54 AM, Werner Heijstek <w.heijstek at gmail.com> wrote:
> I'm going to go ahead and shamelessly bump this question up the list.
> I saw that out of the 34 posts yesterday, only 9 did not receive an
> answer. Perhaps someone who finds this question trivial is checking
> his e-mail right now :)
>
> Werner
>
> On Tue, Mar 29, 2011 at 10:20 AM, jovian <w.heijstek at gmail.com> wrote:
>> 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 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.
>>
>
> ______________________________________________
> 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.
>
--
Ista Zahn
Graduate student
University of Rochester
Department of Clinical and Social Psychology
http://yourpsyche.org
More information about the R-help
mailing list