Skip to content
Prev 262708 / 398502 Next

gridExtra with cairodevie and ggplots

Hi,

You can draw arrangeGrob in a rotated viewport,

library(gridExtra)
library(ggplot2)
ps = replicate(4, qplot(rnorm(10), rnorm(10)), simplify=F)
g = gTree(children=gList(do.call(arrangeGrob, ps)), vp=viewport(angle=90))
grid.draw(g)

though you get some warnings about clipping for some reason.

Perhaps more cleanly, you can define a print.arrange method,
(shamelessly borrowed from ggplot2),

print.arrange = function (x, newpage = is.null(vp), vp = NULL, ...)
{
       if (newpage)
        grid.newpage()
    if (is.null(vp)) {
        grid.draw(x)
    }
    else {
        if (is.character(vp))
            seekViewport(vp)
        else pushViewport(vp)
        grid.draw(x)
        upViewport()
    }
}

print(do.call(arrangeGrob, ps), vp=viewport(angle=90))

HTH,

baptiste
On 15 June 2011 08:39, Justin Haynes <jtor14 at gmail.com> wrote: