R 是否将现有绘图添加到平面网格?

R 是否将现有绘图添加到平面网格?,r,ggplot2,R,Ggplot2,我有一个列表列数据框,带有一些图,例如 exdata <- diamonds %>% group_by(cut) %>% nest %>% crossing(dummy = 1:3) %>% + mutate(plots = map(.x = data, ~ ggplot(.x, aes(x = x, y = y)) + geom_point())) > exdata # A tibble: 15 x 4 cut data

我有一个列表列数据框,带有一些图,例如

exdata <- diamonds %>% group_by(cut) %>% nest %>% crossing(dummy = 1:3) %>% 
+   mutate(plots = map(.x = data, ~ ggplot(.x, aes(x = x, y = y)) + geom_point()))
> exdata
# A tibble: 15 x 4
   cut       data                  dummy plots 
   <ord>     <list>                <int> <list>
 1 Fair      <tibble [1,610 × 9]>      1 <gg>  
 2 Fair      <tibble [1,610 × 9]>      2 <gg>  
 3 Fair      <tibble [1,610 × 9]>      3 <gg>  
 4 Good      <tibble [4,906 × 9]>      1 <gg>  
 5 Good      <tibble [4,906 × 9]>      2 <gg>  
 6 Good      <tibble [4,906 × 9]>      3 <gg>  
 7 Very Good <tibble [12,082 × 9]>     1 <gg>  
 8 Very Good <tibble [12,082 × 9]>     2 <gg>  
 9 Very Good <tibble [12,082 × 9]>     3 <gg>  
10 Premium   <tibble [13,791 × 9]>     1 <gg>  
11 Premium   <tibble [13,791 × 9]>     2 <gg>  
12 Premium   <tibble [13,791 × 9]>     3 <gg>  
13 Ideal     <tibble [21,551 × 9]>     1 <gg>  
14 Ideal     <tibble [21,551 × 9]>     2 <gg>  
15 Ideal     <tibble [21,551 × 9]>     3 <gg>  
exdata%groupby(cut)%%>%nest%%>%crossing(dummy=1:3)%%
+变异(绘图=地图(.x=数据,~ggplot(.x,aes(x=x,y=y))+geom_点()
>exdata
#一个tibble:15x4
切割数据虚拟图
1公平1
2公平2
3公平3
4好的1
5好的2
6好3
很好
很好
很好
10保费1
11保费2
12保费3
13理想1
14理想2
15理想3
exdata$plots
中现在有15个ggplots。我想模仿
ggplot2::facet_grid
的功能,其中每个绘图都以指定的网格格式进行布局

具体来说,我喜欢从左到右水平切割,然后向下读取字段dummy作为垂直方向

如果我是从一个df构建绘图,我会做类似于
df%>%facet\u网格(rows=dummy,columns=cut)

是否可以将facetgrid与现有绘图一起使用,而不是基于从单个数据帧创建绘图而使用此功能?如果是,如何进行?如果没有,如何按上述网格方式布置GGP图

library(patchwork)
exdata %>% 
  arrange(dummy) %>% 
  pull(plots) %>% 
  patchwork::wrap_plots(nrow = max(exdata$dummy))
我按
dummy
进行排序,以便所有
dummy==1
图首先出现。如果您有一个完全填充的网格,这应该可以正常工作。如果缺少一些组合,我认为您需要另一个解决方案,比如
geoFact
包,但这实际上只是
facet\u grid
的一个变体,需要将数据放在一个数据帧中