首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在cowplot中使用plot_grid

如何在cowplot中使用plot_grid
EN

Stack Overflow用户
提问于 2017-08-21 02:32:06
回答 2查看 1.8K关注 0票数 1

我想用cowplot::plot_grid()把几个ggplot2图表合并成一个。从它的文档中:

代码语言:javascript
复制
?plot
Arguments

... 
List of plots to be arranged into the grid. The plots can be objects of one of the following classes: ggplot, recordedplot, gtable, or alternative can be a function creating a plot when called (see examples).

因此,如果我向plot_grid()输入一个ggplot2对象列表,它应该将这些绘图合并为一个,对吗?

那么,为什么这不起作用呢?

代码语言:javascript
复制
p1 <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) + 
  geom_point(size=2.5) 
p2 <- ggplot(diamonds, aes(clarity, fill = cut)) + geom_bar() +
  theme(axis.text.x = element_text(angle=70, vjust=0.5))

list(p1, p2) %>% 
  map(plot_grid)
EN

回答 2

Stack Overflow用户

发布于 2017-08-21 03:24:15

请参阅map (?map)的文档,它指出:

代码语言:javascript
复制
.x     A list or atomic vector. 
.f     A function, formula, or atomic vector.

这意味着您为.f提供的函数将应用于.x中的每个元素。所以下面的代码

代码语言:javascript
复制
list(p1, p2) %>% map(plot_grid)

与下面的代码相同

代码语言:javascript
复制
plot_grid(p1)
plot_grid(p2)

,这可能不是您想要的。

你想要的可能是这个

代码语言:javascript
复制
plot_grid(p1, p2)

或者这个

代码语言:javascript
复制
plot_grid(plotlist = list(p1, p2))
票数 5
EN

Stack Overflow用户

发布于 2020-10-12 23:51:47

您希望do.call()而不是map()将一组参数传递给函数。对于上面的示例:

代码语言:javascript
复制
library(ggplot2)

p1 <- ggplot(mpg, aes(x = cty, y = hwy, colour = factor(cyl))) + 
  geom_point(size=2.5) 
p2 <- ggplot(diamonds, aes(clarity, fill = cut)) + geom_bar() +
  theme(axis.text.x = element_text(angle=70, vjust=0.5))

plots <- list(p1, p2)
do.call(cowplot::plot_grid, plots)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45785572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档