Rev 78769 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/grDevices/man/n2mfrow.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2019 R Core Team% Distributed under GPL 2 or later\name{n2mfrow}\alias{n2mfrow}\title{Compute Default 'mfrow' From Number of Plots}\description{Easy setup for plotting multiple figures (in a rectangular layout) onone page. This computes a sensible default for\code{\link{par}(mfrow)}.}\usage{n2mfrow(nr.plots, asp = 1)}\arguments{\item{nr.plots}{integer; the number of plot figures you'll want to draw.}\item{asp}{positive number; the target aspect ratio (columns / rows) inthe output. Was implicitly hardwired to \code{1}; because of that andback compatibility, there is a somewhat discontinuous behavior whenvarying \code{asp} around 1, for \code{nr.plots <= 12}.}}\value{A length-two integer vector \code{(nr, nc)} giving the positive number of rowsand columns, fulfilling \code{nr * nc >= nr.plots}, and currently, for\code{asp = 1}, \code{nr >= nc >= 1}.}\note{Conceptually, this is a quadratic integer optimization problem, withinequality constraints \eqn{nr >= 1}, \eqn{nc >= 1}, and\eqn{nr.plots >= nr*nc} (and possibly \code{nr >= asp*nc}),and \emph{two} objective functions which would have to be combined via atuning weight, say \eqn{w}, to, e.g.,\eqn{(nr.plots - nr*nc) + w |nr/nc - asp|}.The current algorithm is simple and not trying to solve one of theseoptimization problems.}\author{Martin Maechler; suggestion of \code{asp} by Michael Chirico.}\seealso{\code{\link{par}}, \code{\link{layout}}.}\examples{require(graphics)n2mfrow(8) # 3 x 3n <- 5 ; x <- seq(-2, 2, length.out = 51)## suppose now that 'n' is not known {inside function}op <- par(mfrow = n2mfrow(n))for (j in 1:n)plot(x, x^j, main = substitute(x^ exp, list(exp = j)), type = "l",col = "blue")sapply(1:14, n2mfrow)sapply(1:14, n2mfrow, asp=16/9)}\keyword{dplot}\keyword{utilities}