% File src/library/graphics/man/pairs.Rd % Part of the R package, http://www.R-project.org % Copyright 1995-2007 R Core Team % Distributed under GPL 2 or later \name{pairs} \alias{pairs} \alias{pairs.default} \alias{pairs.formula} \title{Scatterplot Matrices} \description{ A matrix of scatterplots is produced. } \usage{ pairs(x, \dots) \method{pairs}{formula}(formula, data = NULL, \dots, subset, na.action = stats::na.pass) \method{pairs}{default}(x, labels, panel = points, \dots, lower.panel = panel, upper.panel = panel, diag.panel = NULL, text.panel = textPanel, label.pos = 0.5 + has.diag/3, cex.labels = NULL, font.labels = 1, row1attop = TRUE, gap = 1) } \arguments{ \item{x}{the coordinates of points given as numeric columns of a matrix or dataframe. Logical and factor columns are converted to numeric in the same way that \code{\link{data.matrix}} does. } \item{formula}{a formula, such as \code{~ x + y + z}. Each term will give a separate variable in the pairs plot, so terms should be numeric vectors. (A response will be interpreted as another variable, but not treated specially, so it is confusing to use one.)} \item{data}{a data.frame (or list) from which the variables in \code{formula} should be taken.} \item{subset}{an optional vector specifying a subset of observations to be used for plotting.} ..... } \details{ The \eqn{ij}th scatterplot contains \code{x[,i]} plotted against \code{x[,j]}. The scatterplot can be customised by setting panel functions to appear as something completely different. The off-diagonal panel functions are passed the appropriate columns of \code{x} as \code{x} and \code{y}: the diagonal panel function (if any) is passed a single column, and the \code{text.panel} function is passed a single \code{(x, y)} location and the column name. ..... } \author{ Enhancements for \R 1.0.0 contributed by Dr. Jens Oehlschlaegel-Akiyoshi and R-core members. } \references{ Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) \emph{The New S Language}. Wadsworth & Brooks/Cole. } \examples{ pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species", pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)]) ## formula method pairs(~ Fertility + Education + Catholic, data = swiss, subset = Education < 20, main = "Swiss data, Education < 20") pairs(USJudgeRatings) ## put histograms on the diagonal panel.hist <- function(x, ...) { usr <- par("usr"); on.exit(par(usr)) par(usr = c(usr[1:2], 0, 1.5) ) h <- hist(x, plot = FALSE) breaks <- h$breaks; nB <- length(breaks) y <- h$counts; y <- y/max(y) rect(breaks[-nB], 0, breaks[-1], y, col = "cyan", ...) } pairs(USJudgeRatings[1:5], panel = panel.smooth, cex = 1.5, pch = 24, bg = "light blue", diag.panel = panel.hist, cex.labels = 2, font.labels = 2) ## put (absolute) correlations on the upper panels, ## with size proportional to the correlations. panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor, ...) { usr <- par("usr"); on.exit(par(usr)) par(usr = c(0, 1, 0, 1)) r <- abs(cor(x, y)) txt <- format(c(r, 0.123456789), digits = digits)[1] txt <- paste(prefix, txt, sep = "") if(missing(cex.cor)) cex.cor <- 0.8/strwidth(txt) text(0.5, 0.5, txt, cex = cex.cor * r) } pairs(USJudgeRatings, lower.panel = panel.smooth, upper.panel = panel.cor) } \keyword{hplot}