代码之家  ›  专栏  ›  技术社区  ›  zesla

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

  •  2
  • zesla  · 技术社区  · 6 年前

    我想在一个循环中绘制多个ggplot,并在一个plot上显示它们。

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

    我想把上面的情节安排在一页,4行和2列。有人知道怎么做吗?谢谢。

    2 回复  |  直到 6 年前
        1
  •  7
  •   Tung    5 年前

    你可以把所有的情节保存在一个文件夹里 list cowplot::plot_grid() gridExtra::marrangeGrob()

    另请参见:

    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
    

    创建日期:2018-09-20 reprex package (v0.2.1.9000)

        2
  •  0
  •   jimjamslam    6 年前

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

    如果你有一堆不同的 子集 对于单个数据集,您可以按照@PKumar的注释查看ggplot2中的facetting。它本质上是根据一个或多个列将数据分成多个组,然后将它们以不同的方式排列 grid 或者 ribbon .

    另一方面,如果你有一堆 不同的 如果要在一个页面上合并绘图,有几个包可以实现这一点:

    • cowplot 是一个相当成熟的软件包,可以做到这一点
    • patchwork 是一个更新的软件包,它允许您使用算术来布局绘图。