r-如何在循环中保存多个ggplot图表,以便使用网格排列



我有一个for循环,每次循环都会为不同的参数集创建不同的ggplot。现在我一次打印N个不同的图表。我想保存它们,这样我就可以使用网格了。安排把它们都放在一页上。这不起作用:

p <- vector(length = N)
for(i in 1:N)
p[i] <- ggplot( ........
...
...
grid.arrange(p[1], p[2], .. p[N], nrow = 4)

有没有办法保存绘图,以便以后在循环外的页面上绘制绘图网格,或者有没有办法在循环之前设置网格规范,并在执行循环时动态生成网格绘图(例如,par与绘图的使用方式(?

您很少希望在R中使用for循环。在R的lapply()中。一步到位:

do.call(
grid.arrange,
lapply(data, function(f){
ggplot(f, ...)
}
)

编辑:如果要存储列表以供以后打印:

plot_objects <- lapply(data, function(f) {
ggplot(f, ...)
})
do.call(grid.arrange, plot_objects)

这可以通过启动list来存储绘图对象而不是vector来解决

p <- vector('list', N)
for(i in seq_len(N)) {
p[[i]] <- ggplot(...)
}
grid.arrange(p[[1]], p[[2]], ..., p[[N]], nrow = 4)

最新更新