2017-01-23 117 views
1

我被要求獲取colaborator的相關圖。 我的選擇是使用R進行任務,特別是corrplot包。 我一直在研究互聯網和I found multiple ways to obtain such graphics,但不是我被要求的特定圖形(正如你可以在圖片中看到重要的值通過在重要的瓷磚周圍畫一個正方形來突出顯示),這令我感到困惑。如何在R的corrplot包中繪製重要值的線條

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

您可以通過檢查pvalue矩陣來找到哪些單元格有更改的邊框,然後應用此解決方案:http://stackoverflow.com/questions/40538304/how-to-colourise-some-cell-borders -in-r-corrplot(ps addrect與聚類有關) – user20650

+0

感謝您的回答user20650 – JLLavin

回答

0

corrplot允許您將新的圖添加到已有的圖中。因此,一旦創建了初始相關矩陣的圖形,您可以簡單地使用corrplot(..., add = TRUE)以迭代方式添加要突出顯示的單元格。

實現您的目標所需的唯一東西是索引vecor(我稱爲'id')告訴R哪些單元格要突出顯示。請注意,爲了簡單起見,我採用了初始相關矩陣的一個隨機sample,但像ids <- which(p.value < 0.01)(假設您已將您的顯着性水平存儲在單獨的向量中)類似地工作。

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, ...),但在這種情況下,不希望的黑利潤率各地繪製繪圖區。