[R] ways to put multiple graphs on single page (using ggplot2)

Avram Aelony aavram at mac.com
Mon Mar 2 20:56:45 CET 2009


 

I usually have a function like this:

vplayout <- function(x, y) viewport(layout.pos.row=x, layout.pos.col=y)

draw4 <- function(pngname, a,b,c,d,w,h) {
    png(pngname,width=w, height=h)
    grid.newpage()
    pushViewport(viewport(layout=grid.layout(2,2) ) )
        print(a, vp=vplayout(1,1))
        print(b, vp=vplayout(1,2))
        print(c, vp=vplayout(2,1))
        print(d, vp=vplayout(2,2))
    dev.off()
}

#then call it with your graph objects
draw4( "test.png", a,b,c,d, width, height)


-Avram



On Monday, March 02, 2009, at 11:04AM, "Dieter Menne" <dieter.menne at menne-biomed.de> wrote:
>Juliet Hannah <juliet.hannah <at> gmail.com> writes:
>
>> 
>> Hi, Here are three plots:
>> 
>(How to layout on one page)
>
>library(ggplot2)
>data(diamonds)
>randind <- sample(nrow(diamonds),1000,replace=FALSE)
>dsmall <- diamonds[randind,]
>
>a= qplot(carat, data=dsmall, geom="histogram",binwidth=1)
>b= qplot(carat, data=dsmall, geom="histogram",binwidth=.1)
>c=qplot(carat, data=dsmall, geom="histogram",binwidth=.01)
> 
>## Stolen from ggplot documenation
>
>pdf("polishing-layout.pdf", width = 8, height = 6)
>grid.newpage()
>pushViewport(viewport(layout = grid.layout(2, 2)))
>vplayout <- function(x, y)
>viewport(layout.pos.row = x, layout.pos.col = y)
>print(a, vp = vplayout(1, 1:2))
>print(b, vp = vplayout(2, 1))
>print(c, vp = vplayout(2, 2))
>dev.off()
>
>______________________________________________
>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