| Set Base Plot Regions {gridBase} | R Documentation |
These functions can be used to align base plotting regions with the current grid viewport. This can be used to draw base plots within a grid viewport.
gridOMI() gridFIG() gridPLT() gridPAR()
For this to be useful, you will have to make liberal use of
par(new=TRUE) to prevent base from moving to a new page.
With care, these can even be used to draw multiple base plots within
a grid viewport (see the examples below), but in general, base
plotting functions that draw multiple panels (e.g., coplot)
should not be
expected to work.
gridOMI returns a value that can be used to set the
par(omi) parameter.
gridFIG returns a value that can be used to set the
par(fig) parameter.
gridPLT returns a value that can be used to set the
par(plt) parameter.
gridPAR returns a value that can be used to set
some graphical parameters (currently, lwd, lty,
and col).
If you resize the device, all bets are off!
Paul Murrell
opar <- par(no.readonly=TRUE)
# gridFIG
grid.newpage()
pushViewport(viewport(width=0.5, height=0.5))
grid.rect(gp=gpar(col="grey", lty="dashed"))
par(fig=gridFIG())
par(new=TRUE)
plot(1:10)
# multiple plots
# NOTE the use of par(mfg)
# gridOMI
par(opar)
grid.newpage()
pushViewport(viewport(width=0.5, height=0.5))
grid.rect(gp=gpar(col="grey", lty="dashed"))
par(omi=gridOMI())
par(mfrow=c(2, 2), mfg=c(1, 1), mar=c(3, 3, 1, 0))
for (i in 1:4) {
plot(i)
}
# gridPLT
par(opar)
grid.newpage()
pushViewport(viewport(width=0.5, height=0.5))
grid.rect(gp=gpar(col="grey", lwd=5))
par(plt=gridPLT())
par(new=TRUE)
plot(1:10)
# gridFIG with par(omi) set
par(opar)
grid.newpage()
par(omi=rep(1, 4))
pushViewport(viewport(width=0.5, height=0.5))
grid.rect(gp=gpar(col="grey", lwd=5))
par(fig=gridFIG())
par(new=TRUE)
plot(1:10)
# gridPLT with par(omi) set
par(opar)
grid.newpage()
par(omi=rep(1, 4))
pushViewport(viewport(width=0.5, height=0.5))
grid.rect(gp=gpar(col="grey", lwd=5))
par(plt=gridPLT())
par(new=TRUE)
plot(1:10)
# gridPAR
par(opar)
grid.newpage()
pushViewport(viewport(width=0.5, height=0.5,
gp=gpar(col="red", lwd=3, lty="dotted")))
grid.rect(gp=gpar(col="grey", lwd=5))
par(fig=gridFIG())
par(gridPAR())
par(new=TRUE)
plot(1:10, type="b")