pairs(x, ...)
"pairs"(formula, data = NULL, ..., subset, na.action = stats::na.pass)
"pairs"(x, labels, panel = points, ..., horInd = 1:nc, verInd = 1:nc, lower.panel = panel, upper.panel = panel, diag.panel = NULL, text.panel = textPanel, label.pos = 0.5 + has.diag/3, line.main = 3, cex.labels = NULL, font.labels = 1, row1attop = TRUE, gap = 1, log = "")
data.matrix
does.
~ 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.)formula
should be taken.NA
s. The default is to pass missing
values on to the panel functions, but na.action = na.omit
will cause cases with missing values in any of the variables to be
omitted entirely.function(x, y, ...)
which is used to plot
the contents of each panel of the display. Also, graphical parameters can be given as can arguments to
plot
such as main
. par("oma")
will be set
appropriately unless specified.
NULL
) to be used below and above the diagonal respectively.function(x, ...)
to be
applied on the diagonals.function(x, y, labels, cex,
font, ...)
to be applied on the diagonals.y
position of labels in the text panel.main
is specified, line.main
gives
the line
argument to mtext()
which draws the
title. You may want to specify oma
when changing line.main
.plot.default
. log = "xy"
specifies
logarithmic axes for all variables.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.
Setting some of these panel functions to NULL
is
equivalent to not drawing anything there. 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.
By default, missing values are passed to the panel functions and will
often be ignored within a panel. However, for the formula method and
na.action = na.omit
, all cases which contain a missing values for
any of the variables are omitted completely (including when the scales
are selected).
Arguments horInd
and verInd
were introduced in R
3.2.0. If given the same value they can be used to select or re-order
variables: with different ranges of consecutive values they can be
used to plot rectangular windows of a full pairs plot; in the latter
case ‘diagonal’ refers to the diagonal of the full plot.
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)
## show only lower triangle (and suppress labeling for whatever reason):
pairs(USJudgeRatings, text.panel = NULL, upper.panel = NULL)
## 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 <- paste0(prefix, txt)
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)
pairs(iris[-5], log = "xy") # plot all variables on log scale
pairs(iris, log = 1:4, # log the first four
main = "Lengths and Widths in [log]", line.main=1.5, oma=c(2,2,3,2))
Run the code above in your browser using DataLab