## panel para la función  pairs - que no se presenta en le libro
## práctica actual, código no escrito por el autor (además de los comentarios )
## encontrará numerosos argumentos de paneles en la red
## buscando en el motor la expresión: "pairs panels"
## seleccione el más conveniente

## por ejemplo: https://stat.ethz.ch/pipermail/r-help/2011-February/268962.html
## o: en el libro - R Graphics Cookbook de Winston Chang

## uso 1 (líneas curvas para aproximar las nubes de puntos)
#  pairs(Z,diag.panel  = panel.hist,
#          upper.panel = panel.cor,
#          lower.panel = panel.smooth)

## uso 2 (líneas derechas para aproximar las nubes de puntos)
#  pairs(Z,diag.panel = panel.hist,
#        upper.panel  = panel.cor,
#        lower.panel  = panel.lm)


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 = "magenta", ...)
}

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, col = "blue")
}

## con regresión lineal
panel.lm <- function (x, y, col = par("col"), bg = NA, pch = par("pch"), 
                      cex = 1, col.smooth = "red", ...) 
{
  points(x, y, pch = pch, col = col, bg = bg, cex = cex)    
  abline(stats::lm(y ~ x),col = col.smooth, ...) 
}

