show multiple plots from ggplot on one page in r

后端 未结 2 1167
灰色年华
灰色年华 2020-12-07 02:18

I want to make multiple ggplot in a loop and show them on one plot.

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


        
相关标签:
2条回答
  • 2020-12-07 03:10

    Note that, in the loop you provided, the counter i isn't referenced in the plot, so you'll end up printing the same plot eight times!

    If you have a bunch of different subsets of a single dataset and want to lay them out, you can follow @PKumar's comment and check out facetting in ggplot2. It essentially splits your data up into groups according to one or more of your columns and then lays them out in a grid or a ribbon.

    On the other hand, if you have a bunch of a different plots that you want to combine on one page, there're a couple of packages that can make this happen:

    • cowplot is a fairly mature package that can do this, and
    • patchwork is a newer package that lets you lay plots out using arithmetic.

    Hope those help!

    0 讨论(0)
  • 2020-12-07 03:21

    You can save all the plot in a list then use either cowplot::plot_grid() or gridExtra::marrangeGrob() to put them in one or more pages

    See also:

    • Creating arbitrary panes in ggplot2 (patchwork, multipanelfigure & egg packages)

    • Multiple plots in for loop

    library(tidyverse)
    
    # create a list with a specific length 
    plot_lst <- vector("list", length = 8)
    
    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
    

    Created on 2018-09-20 by the reprex package (v0.2.1.9000)

    0 讨论(0)
提交回复
热议问题