如何在R的corrplot包

时间:2017-01-23 09:54:06

标签: r graphics r-corrplot

我被要求获得一个colaborator的相关图。 我的选择是使用R作为任务,特别是 corrplot 包。 我一直在研究互联网和I found multiple ways to obtain such graphics,但不是我要求的具体图形(正如你在图片中看到的那样,通过在重要的瓷砖周围画一个正方形突出显示重要值),这让我很困惑

Example of the correlation plot required

我实现的最接近的结果是使用此行下的代码,但我似乎无法找到在重要图块周围绘制线条的选项(如果存在)。

#Insignificant correlations are leaved blank
corrplot(res3$r, type="upper", order="hclust", 
         p.mat = res3$P, sig.level = 0.01, insig = "blank")

我尝试添加“addrect”参数,但它不起作用。

#Insignificant correlation are crossed
corrplot(res3$r, type="upper", order="hclust", p.mat = res3$P,
         addrect=2, sig.level = 0.01, insig = "blank")

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

corrplot允许您将新图添加到现有图中。因此,一旦您创建了初始相关矩阵的图,您只需使用corrplot(..., add = TRUE)以迭代方式添加要突出显示的单元格。

实现目标所需的唯一事情是指数vecor(我称之为'ids')告诉R要突出显示哪些细胞。请注意,为了简单起见,我采用了初始相关矩阵的随机sample,但ids <- which(p.value < 0.01)(假设您已将显着性水平存储在单独的向量中)之类的工作方式类似。< / p>

library(corrplot)

## create and visualize correlation matrix
data(mtcars)
M <- cor(mtcars)

corrplot(M, cl.pos = "n", na.label = " ")

## select cells to highlight (e.g., statistically significant values)
set.seed(10)
ids <- sample(1:length(M), 15L)

## duplicate correlation matrix and reject all irrelevant values
N <- M
N[-ids] <- NA

## add significant cells to the initial corrplot iteratively 
for (i in ids) {
  O <- N
  O[-i] <- NA
  corrplot(O, cl.pos = "n", na.label = " ", addgrid.col = "black", add = TRUE, 
           bg = "transparent", tl.col = "transparent")
}

corrplot

请注意,您还可以使用for一次性添加所有要突出显示的值(即,不需要corrplot(N, ...)循环),但在这种情况下,会在周围绘制一个不合需要的黑色边距。绘图区。