Section 26 Two or More Numerics

26.1 Scatterplot Marix: pairs

The function pairs creates a matrix of scatterplot.

26.2 Scatter Plot Matrix

?pairs

data(mtcars)

pairs(mtcars[,c(1:4)])

pairs(mtcars[,c(1:4)],
         main='Scatter Plot',
         cex = 1.5, pch = 24, bg = "light blue")

26.3 Scatter Plot Matrix with Histogram

## 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(mtcars[1:4],
      cex = 1.5, pch = 24, bg = "light blue",
      panel = panel.smooth,
      diag.panel = panel.hist, 
      cex.labels = 2, font.labels = 2)

26.4 Scatter Plot Matrix with Histogram & Correlation

## 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(mtcars[1:4], 
      lower.panel = panel.smooth, 
      diag.panel = panel.hist,
      upper.panel = panel.cor)

Note: Texts, representing the correlation coefficients in the upper panel, are according to the size of the estimates of correlation coefficients.