为什么白色 bg 在 corrplot 中具有 Spearman 相关性?

Why white bg with Spearman correlation in corrplot?

当 Spearman cor r 时,第一个对角线背景总是白色的。 其他 cor 措施永远不会发生这种情况。

library("psych")
library("corrplot")   

M <- mtcars 
M.cor <- cor(M)

p.mat.all <- psych::corr.test(M.cor, adjust = "none", ci = F)

alpha <- 0.05

col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))  

lapply(c("r","p","t"), function(ID) { # 
    x <- p.mat.all[[ID]]    
    corrplot( M.cor, 
              p.mat = x, 
              sig.level = alpha, 
              insig = "blank", 
    ) 
})

我明确地放在那里 diag = T 但没有它也应该没问题。

图1 最小示例的输出

没有警告。

R: 3.3.1
OS:Debian 8.5
开发商门票:#74

这是软件中的错误。已举报给开发者。

另见相关 github 问题:https://github.com/taiyun/corrplot/issues/74,简短引用 vsimko:

This looks like a problem in psych::corr.test and not in corrplot

p.mat.all <- psych::corr.test(M.cor, adjust = "none", ci = F)
diag(p.mat.all$r) # produces 1
diag(p.mat.all$p) # produces 0
diag(p.mat.all$t) # produces Inf

解决方法

par(mfcol = c(1, 3))
M <- cor(mtcars)
p.mat.all <- psych::corr.test(M, adjust = "none", ci = FALSE)

for (ID in c("r", "p", "t")) {
  x <- p.mat.all[[ID]]
  diag(x) <- 0 ### THE WORKAROUND IS HERE ###
  corrplot( M, p.mat = x, sig.level = .05, insig = "blank") 
}

图1 输出