ggpairs plot with heatmap of correlation values
My question is twofold;
I have a ggpairs plot with the default upper = list(continuous = cor)
and I would like to colour the tiles by correlation values (exactly like what ggcorr does).
I have this:
I would like the correlation values of the plot above to be coloured like this:
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)
I had a brief go at trying to use upper = list(continuous = wrap(ggcorr)
but didn't have any luck and, given that both functions return plot calls, I don't think that's the right path?
I am aware that I could build this in ggplot (eg Sandy Muspratt's solution) but given that the GGally package already has the functionality I am looking for I thought I might be overlooking something.
More broadly, I would like to know how we, or if we can, call the correlation values? A simpler option may be to colour the labels rather than the tile (ie this question using colour rather than size) but I need a variable to assign to colour...
Being able to call the correlation values to use in other plots would be handy although I suppose I could just recalculate them myself.
Thank you!
A possible solution is to get the list of colors from the ggcorr
correlation matrix plot and to set these colors as background in the upper tiles of the ggpairs
matrix of plots.
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)
The correlation matrix plot is:
# 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/30868.html
上一篇: 使用变量指定ggpairs图的颜色,但不绘制该变量
下一篇: ggpairs绘制相关值的热图