在r的一页上显示ggplot的多个图

时间:2018-09-21 04:10:18

标签: r for-loop ggplot2

我想在一个循环中制作多个ggplot并将它们显示在一个图上。

for ( i in 1:8) {
    g <- ggplot(data=mtcars, aes(x=hp, y=wt))+
        geom_point()
    print(g)
}

我想将以上图解安排在一页,4行和2列上。有谁知道这是怎么做到的吗?谢谢。

2 个答案:

答案 0 :(得分:3)

您可以将所有图解保存在list中,然后使用cowplot::plot_grid()gridExtra::marrangeGrob()将它们放在一页或多页中

另请参阅:

library(tidyverse)

plot_lst <- list()

for (i in 1:8) {
  g <- ggplot(data = mtcars, aes(x = hp, y = wt)) +
    geom_point()
  plot_lst[[i]] <- g
}

# Combine all plots
cowplot::plot_grid(plotlist = plot_lst, nrow = 4)

library(gridExtra)
ml1 <- marrangeGrob(plot_lst, nrow = 2, ncol = 2)
ml1

reprex package(v0.2.1.9000)于2018-09-20创建

答案 1 :(得分:0)

请注意,在您提供的循环中,图中未引用计数器i,因此您最终将在同一张图中打印八次!

如果单个数据集有很多不同的子集并希望对其进行布局,则可以遵循@PKumar的注释并在ggplot2中检查构面。本质上,它会根据您的一个或多个列将数据分为几组,然后将其布置在gridribbon中。

另一方面,如果要在一个页面上合并一堆不同的图,则有两个软件包可以实现此目的:

  • cowplot是一个相当成熟的软件包,可以做到这一点,并且
  • patchwork是一个较新的软件包,可让您使用算术对图形进行布局。

希望那些帮助!