为什么在corrplot中使用Spearman相关的白bg?

时间:2016-11-10 16:56:15

标签: r lapply correlation r-corrplot

当Spearman cor r时,第一个对角背景总是白色的。 它从未发生过其他的措施。

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) { # http://stackoverflow.com/a/40531043/54964
    x <- p.mat.all[[ID]]    
    corrplot( M.cor, 
              p.mat = x, 
              sig.level = alpha, 
              insig = "blank", 
    ) 
})

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

图。 1最小例子的输出

enter image description here

没有警告。

R:3.3.1
操作系统:Debian 8.5
开发人员的票证:#74

1 个答案:

答案 0 :(得分:1)

这是该软件中的一个错误。它向开发者报告。

另请参阅相关的github问题:https://github.com/taiyun/corrplot/issues/74,很快就会引用vsimko:

  

这看起来像是psych :: corr.test中的一个问题而不是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输出

enter image description here