2017-09-27 4 views
0

Rパッケージcorrplotからのプロットを操作したいと思います。パッケージから次の例では:corrplotによる操作

library(corrplot) 
data(mtcars) 
M <- cor(mtcars) 

cor.mtest <- function(mat, conf.level = 0.95){ 
    mat <- as.matrix(mat) 
    n <- ncol(mat) 
    p.mat <- lowCI.mat <- uppCI.mat <- matrix(NA, n, n) 
    diag(p.mat) <- 0 
    diag(lowCI.mat) <- diag(uppCI.mat) <- 1 
    for(i in 1:(n-1)){ 
    for(j in (i+1):n){ 
     tmp <- cor.test(mat[,i], mat[,j], conf.level = conf.level) 
     p.mat[i,j] <- p.mat[j,i] <- tmp$p.value 
     lowCI.mat[i,j] <- lowCI.mat[j,i] <- tmp$conf.int[1] 
     uppCI.mat[i,j] <- uppCI.mat[j,i] <- tmp$conf.int[2] 
    } 
    } 
    return(list(p.mat, lowCI.mat, uppCI.mat)) 
} 
res1 <- cor.mtest(mtcars,0.95) 

我々はX記号でそれらの統計的に意味のない細胞を用いて行列をプロットすることができます。また

corrplot(M, p.mat = res1[[1]], sig.level=0.05) 

、信頼区間は

で示すことができ
corrplot(M, low=res1[[2]], upp=res1[[3]], order="hclust", 
       rect.col="navy", plotC="rect",cl.pos="n") 

上記の2つのプロットを以下の操作と組み合わせたいと思います。

1)統計的に有意な(些細ではない)細胞の色を濃い青などの色で塗りつぶすことは可能ですか?

2)上三角部分を使って信頼区間を表示しながら、行列の下三角部分をプロットするにはどうすればよいですか?あなたの第二の質問について

答えて

1

、あなたは可能性があり プロット下三角:

corrplot(M, p.mat = res1[[1]], sig.level=0.05, 
     type='lower', tl.pos='lt') 

と上位1:あなたの第1の質問について

corrplot(M, low=res1[[2]], upp=res1[[3]], order="hclust", 
     rect.col="navy", plotC="rect",cl.pos="n", 
     type='upper', tl.pos='n', add=T) 

を、私はあなたが何を意味するかわからないんだけど背景(私はまだコメントできません - 私はここに書きます)。

EDIT:p値に従って各四角形の背景色を設定する1つの方法は、bgのマトリックスを与えることです。これはtype = "full"に対してのみ機能します。三角形の部分では、これを調整する必要があります。そうでなければ、プロットされていない行列の部分から色が使用されます。

sig_level = 0.05 
bg_colors <- res1[[1]] < sig_level 
bg_colors[bg_colors == T] <- "yellow" 
bg_colors[bg_colors == F] <- "white" 
diag(bg_colors) <- "white" # if the diagonal values shall be white 

# select colors from lower/upper part of matrix: 
bg_colors_lower <- bg_colors[lower.tri(bg_colors, diag=T)] 
bg_colors_upper <- bg_colors[upper.tri(bg_colors, diag=T)] 

# lower triangle 
corrplot(M, p.mat = res1[[1]], sig.level=sig_level, 
     type='lower', tl.pos='lt', bg=bg_colors_lower) 

# upper triangle 
corrplot(M, low=res1[[2]], upp=res1[[3]], order="hclust", 
     rect.col="navy", plotC="rect",cl.pos="n", 
     type='upper', tl.pos='n', add=T, bg=bg_colors_upper) 

これは与える:

Corrplot with adjusted background color and mixed type

+0

おかげで、あなたの提案が第二の問題に適しています!第1の質問については、現在、デフォルトの背景はすべての四角形セルで白です(各四角形の塗りつぶされていない部分が白であることがわかります)。だから、私は、統計的に有意な細胞については、円の外側(各四角形内)を黄色に変えたいと思っています。これはできますか? – bluepole

+0

上部に背景色を追加する方法(信頼区間)?私は 'corrplot(M、low = res1 [2]、upp = res1 [3]、order =" hclust "、rect.col =" navy "、plotC =" rect "、cl.pos = (bg = t(bg_colors)、add = T) 'と表示されますが、上三角部分の色付きの位置は正しく表示されません。 – bluepole

+1

問題は、 'type =" lower "'または 'type =" upper "'を使用したときに、フル行列のプロットデータと次元が異なることです。カラーマトリックス/ベクトルも調整する必要があります。私はそれに応じて答えを編集しました。 – ani