2017-08-25 83 views
3

私の質問は2倍です。ggpairs相関値のヒートマップによるプロット

私はデフォルトのupper = list(continuous = cor)のggpairsプロットを持っており、相関値(正確にはggcorrと同じ)でタイルを色付けしたいと思います。私はupper = list(continuous = wrap(ggcorr)を使用しようとしているで簡単に行くがあったが、持っていなかったggcorr heatmap of correlation values

library(GGally) 

sample_df <- data.frame(replicate(7,sample(0:5000,100))) 
colnames(sample_df) <- c("KUM", "MHP", "WEB", "OSH", "JAC", "WSW", "gaugings") 

ggpairs(sample_df, lower = list(continuous = "smooth")) 
ggcorr(sample_df, label = TRUE, label_round = 2) 

ggpairs plot of daily flows
私は上記のように着色するためのプロットの相関値を希望:

私はこれを持っています両方の関数がプロットコールを返すことを考えれば、それは正しい道だとは思わない?

これはggplot(例:Sandy Muspratt's solution)で作成できますが、GGallyパッケージにはすでに機能がありますので、私は何か見落としている可能性があると考えています。


もっと広く言えば、われわれはどうやって、あるいはできるかどうか、相関値を呼び出すことができますか?より単純なオプションは、タイルではなくラベルを色付けすることです(つまり、サイズではなく色を使用してthis question)。

他のプロットで使用する相関値を呼び出すことができる私はちょうど自分でそれらを再計算することができると思うが便利です。

ありがとうございました!

答えて

4

可能な解決策は、ggcorr相関行列プロットから色のリストを取得し、プロットのggpairsタイルの上部タイルにこれらの色を背景として設定することです。

library(GGally) 
library(mvtnorm) 
# Generate data 
set.seed(1) 
n <- 100 
p <- 7 
A <- matrix(runif(p^2)*2-1, ncol=p) 
Sigma <- cov2cor(t(A) %*% A) 
sample_df <- data.frame(rmvnorm(n, mean=rep(0,p), sigma=Sigma)) 
colnames(sample_df) <- c("KUM", "MHP", "WEB", "OSH", "JAC", "WSW", "gaugings") 

# Matrix of plots 
p1 <- ggpairs(sample_df, lower = list(continuous = "smooth")) 
# Correlation matrix plot 
p2 <- ggcorr(sample_df, label = TRUE, label_round = 2) 

相関行列のプロットである:

enter image description here

# Get list of colors from the correlation matrix plot 
library(ggplot2) 
g2 <- ggplotGrob(p2) 
colors <- g2$grobs[[6]]$children[[3]]$gp$fill 

# Change background color to tiles in the upper triangular matrix of plots 
idx <- 1 
for (k1 in 1:(p-1)) { 
    for (k2 in (k1+1):p) { 
    plt <- getPlot(p1,k1,k2) + 
    theme(panel.background = element_rect(fill = colors[idx], color="white"), 
      panel.grid.major = element_line(color=colors[idx])) 
    p1 <- putPlot(p1,plt,k1,k2) 
    idx <- idx+1 
} 
} 
print(p1) 

enter image description here

関連する問題