label <- textGrob("A\nPlot\nLabel ", x=0, just="left") x <- seq(0.1, 0.9, length=50) y <- runif(50, 0.1, 0.9) gplot <- gTree( children=gList(rectGrob(gp=gpar(col="grey60", fill="white")), linesGrob(x, y), pointsGrob(x, y, pch=16, size=unit(1.5, "mm"))), vp=viewport(width=unit(1, "npc") - unit(5, "mm"), height=unit(1, "npc") - unit(5, "mm"))) layout <- grid.layout(1, 2, widths=unit(c(1, 1), c("null", "grobwidth"), list(NULL, label))) grid.rect(gp=gpar(col="grey60", fill="grey90")) pushViewport(viewport(layout=layout)) pushViewport(viewport(layout.pos.col=2)) grid.draw(label) popViewport() pushViewport(viewport(layout.pos.col=1)) grid.draw(gplot) popViewport(2)