我想用cowplot::plot_grid()把几个ggplot2图表合并成一个。从它的文档中:
?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对象列表,它应该将这些绘图合并为一个,对吗?
那么,为什么这不起作用呢?
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)发布于 2017-08-21 03:24:15
请参阅map (?map)的文档,它指出:
.x A list or atomic vector.
.f A function, formula, or atomic vector.这意味着您为.f提供的函数将应用于.x中的每个元素。所以下面的代码
list(p1, p2) %>% map(plot_grid)与下面的代码相同
plot_grid(p1)
plot_grid(p2),这可能不是您想要的。
你想要的可能是这个
plot_grid(p1, p2)或者这个
plot_grid(plotlist = list(p1, p2))发布于 2020-10-12 23:51:47
您希望do.call()而不是map()将一组参数传递给函数。对于上面的示例:
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)https://stackoverflow.com/questions/45785572
复制相似问题