corrplot shows insignificant correlation coefficients even when insig = “blank” is set

╄→尐↘猪︶ㄣ 提交于 2019-11-28 11:43:40

You have to do a little work for this. You need to define a vector of colours manually for the p-values, that is passed to addCoef.col

If you were ordering alphabetically, it is straight forward

mycol <- ifelse(c(cor1[[1]] < 0.05), "black", "white")

corrplot(cor(test), p.mat = cor1[[1]] , insig = "blank", method = "color", 
         addCoef.col=mycol ,
         order = "original", tl.cex = 1/par("cex"), 
         cl.cex = 1/par("cex"), addCoefasPercent = TRUE)

But as you want to order by the eigenvalues you need to calculate the ordering outside of the corrplot function

ord <-   corrMatOrder(cor(test), order="AOE")
M <- cor(test)[ord, ord]

pval <- psych::corr.test(data.frame(test), adjust="none")$p[ord, ord]
mycol <- ifelse(c(pval < 0.05), "black", "white")


corrplot(M, p.mat = pval , insig = "blank", method = "color", addCoef.col=mycol ,
         order = "original", tl.cex = 1/par("cex"), 
         cl.cex = 1/par("cex"), addCoefasPercent = TRUE)


EDIT re @Masi's comments

To update the limits on the colourbar set the limits with cl.lim

 corrplot(cor(test), p.mat = cor1[[1]] , insig = "blank", method = "color", 
       addCoef.col=mycol , addCoefasPercent=TRUE, 
       order = "original", cl.lim = c(-100, 100))
rothmi

If you're not too picky, you could also leave the background set to white and make your addCoef.col = "white" instead of "grey" as you have it originally. That would eliminate the need for the ordering and ifelse statements.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!