ggcorrplot,多列,按因子分组

问题描述

我的数据如下所示

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)

enter image description here


示例数据

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