今天学习文献(Pagliarini2016),看到这样的相关系数图:
以往通常用表的形式:
或者用矩阵图的形式:
像Pagliarini2016中的热图头一次见于文献(有点炫,适合PPT用)。那怎么实现的呢?corrplot
可以做这个事:
## 构建相关矩阵
M<-cor(mtcars)
## 热图
corrplot(M, method="circle")
因为上对角和下对角是一样的,也可以只有一半:
corrplot(M, type="upper")
但是这些热图有个问题是,不知道显著性。corrplot
也可以实现:
- 获得显著性矩阵
# mat : is a matrix of data
# ... : further arguments to pass to the native R cor.test function
cor.mtest <- function(mat, ...) {
mat <- as.matrix(mat)
n <- ncol(mat)
p.mat<- matrix(NA, n, n)
diag(p.mat) <- 0
for (i in 1:(n - 1)) {
for (j in (i + 1):n) {
tmp <- cor.test(mat[, i], mat[, j], ...)
p.mat[i, j] <- p.mat[j, i] <- tmp$p.value
}
}
colnames(p.mat) <- rownames(p.mat) <- colnames(mat)
p.mat
}
# matrix of the p-value of the correlation
p.mat <- cor.mtest(mtcars)
head(p.mat[, 1:5])
- 个性化相关图
col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))
corrplot(M, method="color", col=col(200),
type="upper", order="hclust",
addCoef.col = "black", # Add coefficient of correlation
tl.col="black", tl.srt=45, #Text label color and rotation
# Combine with significance
p.mat = p.mat, sig.level = 0.01, insig = "blank",
# hide correlation coefficient on the principal diagonal
diag=FALSE
)
这就比较理想了。