gpt4 book ai didi

r - 具有相关值热图的 ggpairs 绘图

转载 作者:行者123 更新时间:2023-12-02 06:35:17 25 4
gpt4 key购买 nike

我的问题是双重的;

我有一个带有默认 upper = list(continuous = cor) 的 ggpairs 图,我想根据相关值对图 block 进行着色(与 ggcorr 的做法完全相同)。

我有这个:ggpairs plot of daily flows
我希望上图的相关值的颜色如下: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)

我曾短暂尝试过使用 upper = list(continuous = wrap(ggcorr) 但没有任何运气,并且鉴于这两个函数都返回绘图调用,我不认为这是正确的道路吗?

我知道我可以在 ggplot 中构建它(例如 Sandy Muspratt's solution ),但考虑到 GGally 包已经具有我正在寻找的功能,我认为我可能会忽略一些东西。

<小时/>

更广泛地说,我想知道我们如何或是否可以调用相关值?一个更简单的选择可能是为标签而不是图 block 着色(即 this question 使用颜色而不是大小),但我需要一个变量来分配颜色...

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

谢谢!

最佳答案

一个可能的解决方案是从ggcorr相关矩阵图中获取颜色列表,并将这些颜色设置为ggpairs图矩阵上部图 block 中的背景.

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

关于r - 具有相关值热图的 ggpairs 绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45873483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com