我被要求获得一个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")
任何帮助将不胜感激。
答案 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")
}
请注意,您还可以使用for
一次性添加所有要突出显示的值(即,不需要corrplot(N, ...)
循环),但在这种情况下,会在周围绘制一个不合需要的黑色边距。绘图区。