How to modify this Correlation Matrix plot?

前端 未结 2 513
北恋
北恋 2020-12-14 04:47

I have the following codes to display a correlation matrix,

panel.cor <- function(x, y, digits=2, prefix=\"\", cex.cor)
{
    usr <- par(\"usr\"); on.e         


        
2条回答
  •  一生所求
    2020-12-14 05:32

    Help page for the function pairs() gives you example how to define panels to plot.

    For your particular case:

    Changed panel.cor() function to show to lines of text - p-values and correlation coefficients.

    panel.cor <- function(x, y, digits=2, 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]
      test <- cor.test(x,y)
      Signif <- ifelse(round(test$p.value,3)<0.001,"p<0.001",paste("p=",round(test$p.value,3)))  
      text(0.5, 0.25, paste("r=",txt))
      text(.5, .75, Signif)
    }
    

    For panel.smooth() function defined cex=, col= and pch= arguments.

    panel.smooth<-function (x, y, col = "blue", bg = NA, pch = 18, 
                            cex = 0.8, col.smooth = "red", span = 2/3, iter = 3, ...) 
    {
      points(x, y, pch = pch, col = col, bg = bg, cex = cex)
      ok <- is.finite(x) & is.finite(y)
      if (any(ok)) 
        lines(stats::lowess(x[ok], y[ok], f = span, iter = iter), 
              col = col.smooth, ...)
    }
    

    To add histograms, panel.hist() functions should be defined (taken from help file of pairs())

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

    Final plot:

    pairs(USJudgeRatings[,c(2:3,6,1,7)],
              lower.panel=panel.smooth, upper.panel=panel.cor,diag.panel=panel.hist)
    

    enter image description here

提交回复
热议问题