pairs                package:graphics                R Documentation

Scatterplot Matrices

Description:

     A matrix of scatterplots is produced.

Usage:

     pairs(x, ...)

     ## S3 method for class 'formula':
     pairs(formula, data = NULL, ..., subset)

     ## Default S3 method:
     pairs(x, labels, panel = points, ...,
           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:

       x: the coordinates of points given as columns of a matrix.

 formula: a formula, such as 'y ~ x'.

    data: a data.frame (or list) from which the variables in 'formula'
          should be taken.

  subset: an optional vector specifying a subset of observations to be
          used for plotting.

  labels: the names of the variables.

   panel: 'function(x,y,...)' which is used to plot the contents of
          each panel of the display.

     ...: graphical parameters can be given as arguments to 'plot'.

lower.panel, upper.panel: separate panel functions to be used below and
          above the diagonal respectively.

diag.panel: optional 'function(x, ...)' to be applied on the diagonals.

text.panel: optional 'function(x, y, labels, cex, font, ...)' to be
          applied on the diagonals.

label.pos: 'y' position of labels in the text panel.

cex.labels, font.labels: graphics parameters for the text panel.

row1attop: logical. Should the layout be matrix-like with row 1 at the
          top, or graph-like with row 1 at the bottom?

     gap: Distance between subplots, in margin lines.

Details:

     The ijth scatterplot contains 'x[,i]' plotted against '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 'x' as 'x' and
     'y': the diagonal panel function (if any) is passed a single
     column, and the 'text.panel' function is passed a single '(x, y)'
     location and the column name.

     The graphical parameters 'pch' and 'col' can be used to specify a
     vector of plotting symbols and colors to be used in the plots.

     The graphical parameter 'oma' will be set by 'pairs.default'
     unless supplied as an argument.

     A panel function should not attempt to start a new plot, but just
     plot within a given coordinate system: thus 'plot' and 'boxplot'
     are not panel functions.

Author(s):

     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) _The New S
     Language_. Wadsworth & Brooks/Cole.

Examples:

     data(iris)
     pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species",
           pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])

     ## formula method
     data(swiss)
     pairs(~ Fertility + Education + Catholic, data = swiss,
           subset = Education < 20, main = "Swiss data, Education < 20")

     data(USJudgeRatings)
     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 <- 0.8/strwidth(txt)
         text(0.5, 0.5, txt, cex = cex * r)
     }
     pairs(USJudgeRatings, lower.panel=panel.smooth, upper.panel=panel.cor)

