ggpairs绘制相关值的热图

我的问题是双重的。

我有一个ggpairs阴谋,默认的upper = list(continuous = cor) ,我想用相关值对瓷砖着色(就像ggcorr所做的一样)。

我有这个: ggpairs日常流量情节
我希望上面的图的相关值可以像这样着色: 相关值的ggcorr热图

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)

我尝试使用upper = list(continuous = wrap(ggcorr)但没有任何运气,并且考虑到这两个函数都会返回调用调用,我不认为这是正确的路径?

我知道我可以在ggplot中创建它(例如Sandy Muspratt的解决方案),但是鉴于GGally包已经具有我正在寻找的功能,我想我可能会忽略某些东西。


更广泛地说,我想知道我们如何,或者如果我们能够称之为相关值? 一个更简单的选择可能是为标签着色而不是使用瓦片(即,使用颜色而不是大小的这个问题),但我需要一个变量来指定颜色...

能够调用相关值在其他地块中使用会很方便,但我想我可以自己重新计算它们。

谢谢!


一个可能的解决方案是从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)

相关矩阵图是:

在这里输入图像描述

# 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)

在这里输入图像描述

链接地址: http://www.djcxy.com/p/30867.html

上一篇: ggpairs plot with heatmap of correlation values

下一篇: Customizing ggpairs to make the correlation matrix more readable