Hi,

You can set up a Grid layout with one viewport at the bottom and
another on the left and use grid.text to add your labels. An example
is given below using grid.pack.

The gridExtra package provides a convenient wrapper for these regular
arrangements of plots,

##library(gridExtra) #http://gridextra.googlecode.com/
source("http://gridextra.googlecode.com/svn/trunk/R/arrange.r";)

arrange(a, b, c, d)

I will add a viewport on the left side for a global y axis, but in the
meantime you can use packGrob,

## return a grob with all plots
p <- arrange(a, b, c, d, plot=FALSE)

g <- frameGrob()
g <- packGrob(g, p)
g <- packGrob(g, textGrob("my y label", rot=90), side = "left",
              border = unit(rep(4, 4), "mm"))
g <- packGrob(g, textGrob("my x label"), side = "bottom",
              border = unit(rep(4, 4), "mm"))

grid.draw(g)


HTH,

baptiste


2009/12/30 Lorenzo Isella <lorenzo.ise...@gmail.com>:
> Dear All,
> I am trying to stitch together multiple plots using ggplot2
> Consider for instance the following snippet based on an old thread
> (http://tinyurl.com/ylehm2t)
>
> library(ggplot2)
> vplayout <- function(x, y) viewport(layout.pos.row=x, layout.pos.col=y)
>
> draw4 <- function(pdfname, a,b,c,d,w,h) {
>
>   pdf(pdfname,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()
> }
>
> data(diamonds)
>
>
> set.seed(1234)
>
> 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)
> d <- qplot(carat, data=dsmall, geom="histogram",binwidth=2)
>
> width <- 7
> height <- 7
>
> draw4( "test-4.pdf", a,b,c,d, width, height)
>
>
> Is there any way to give an overall label along the y and x axis?
> E.g.something like a xlab to write some text which applies to the x axis
> of all the plots and which should go at the middle bottom of the
> compound plot (and something perfectly along these lines for the y axis).
> Many thanks
>
> Lorenzo
>
> ______________________________________________
> 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.
>

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

Reply via email to