ggpairs绘制相关值的热图
我的问题是双重的。
我有一个ggpairs阴谋,默认的upper = list(continuous = cor)
,我想用相关值对瓷砖着色(就像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