问题描述
我的数据如下所示
data = data.frame(
Group = sapply(1:5,function(x) paste0("G",x)),Y = runif(100,min=1,max=3),X1 = rnorm(100,100,10),X2 = rnorm(100,20,8)
)
我想要的是绘制 ggcorrplot 在 (X1,Y),(X2,Y) 之间为 1:5 组的相关性 即相关图应该是这样的
(X1,Y) (X2,Y)
G1
G2
G3
G4
G5
我尝试过的:
correlate <- data %>%
group_by(Group) %>%
summarise(r = cor(cbind(X1,X2),Y))
#Groups: Group [5]
Group r[,1]
<chr> <dbl>
1 G1 -0.472
2 G1 -0.0375
3 G2 0.0385
4 G2 0.0248
5 G3 0.0232
6 G3 0.507
7 G4 -0.180
8 G4 -0.452
9 G5 -0.264
10 G5 0.297
我得到了值,但我必须知道第一个是 (X1,Y) 和第二个 (X2,Y) 不是有一些很好的方法可以自动完成吗?以及如何使用 ggcorrplot 绘制这些值?
解决方法
如果我理解正确,那么以下内容如何(使用 patchwork::wrap_plots
)
library(ggcorrplot)
library(patchwork)
library(tidyverse)
df <- data %>%
group_by(Group) %>%
nest() %>%
mutate(plot = map2(data,Group,~ggcorrplot(.x) + ggtitle(.y)))
df$plot %>%
wrap_plots(ncol = 1)
示例数据
set.seed(2020)
data = data.frame(
Group = sapply(1:5,function(x) paste0("G",x)),Y = runif(100,min=1,max=3),X1 = rnorm(100,100,10),X2 = rnorm(100,20,8)
)