Multiple plots on one page using ggplot

前端 未结 2 1280
一向
一向 2021-01-20 14:07

I have 12 plots generated by a loop and I want to plot them with 3 rows and 2 columns on one page (2 pages in total). I know how to do it in R

pdf(\"1.pdf\")         


        
相关标签:
2条回答
  • 2021-01-20 14:24

    You might want to take a look at the cowplot package that allows more flexibility than just using a naked grid.arrange.

    This works - albeit a bit inelegantly:

    library(ggplot2)
    library(grid)
    library(gridExtra)
    lg <- list()
    for (i in 1:12) {
      x <- 1:10
      y <- 2*x + rnorm(x)
      lg[[i]] <- qplot(x, y)
    }
    grid.arrange(lg[[1]],lg[[2]],lg[[3]],lg[[4]],lg[[5]],lg[[6]],nrow=3,ncol=2)
    grid.arrange(lg[[7]],lg[[8]],lg[[9]],lg[[10]],lg[[11]],lg[[12]],nrow=3,ncol=2)
    

    Another more elegant but somewhat obtuse way to do the grid.arrange is the following (thanks to Axeman and beetroot - note the comments).

    do.call(grid.arrange, c(lg[1:6], nrow = 3))
    do.call(grid.arrange, c(lg[7:12], nrow = 3))
    

    or this:

    grid.arrange(grobs = lg[1:6], ncol=2)
    grid.arrange(grobs = lg[7:12], ncol=2)
    

    They all result in this - (think two of these - they look the same anyway):

    0 讨论(0)
  • 2021-01-20 14:31

    marrangeGrob is a convenient wrapper for multiple pages,

    marrangeGrob(lg, ncol=2, nrow=3)
    

    or you can call grid.arrange() explicitly twice,

    grid.arrange(grobs = lg[1:6], ncol=2)
    grid.arrange(grobs = lg[7:12], ncol=2)
    
    0 讨论(0)
提交回复
热议问题