【问题标题】:plotting every graph on separate page in the pdf output file using ggplot使用 ggplot 在 pdf 输出文件的单独页面上绘制每个图形
【发布时间】:2019-12-12 23:48:26
【问题描述】:

我正在尝试使用 lapply 为我正在循环的每个文件使用 ggplot 包绘制 3 个图表。

这是我的代码:

pdf("outfile.pdf")
lapply(files,function(x){
  a <- basename(x)
  a <- gsub("*_junc_with_type_genename_fpkm.txt","",a)
  d <- fread(x,drop=c(1:4,6,7))
  setnames(d, c("junc_counts", "TYPE","gene_name","sgd_name","fpkm"))

  p1 <- ggplot(...)
  p2 <- ggplot(...)
  p3 <- ggplot(...)
  grid.arrange(p1,p2,p3)
})
dev.off()

所以如果有 5 个输入文件,我想在 pdf 输出文件的不同页面上绘制 15 个图形(每个文件 3 个:p1、p2、p3)。

目前,上面的代码在一页上绘制了 3 个图表。

【问题讨论】:

    标签: r pdf ggplot2


    【解决方案1】:

    grid.arrange() 语句将三个图包装成一个图,这就是每页获得 3 个图的原因。可能不是最漂亮的解决方案,但您可以使用另一个循环,以便为每个图形打印一页:

    library(ggplot2)
    
    pdf("outfile.pdf")
    lapply(1:5,function(x){
      p1 <- ggplot(cars, aes(dist, speed)) + geom_point()
      p2 <- ggplot(cars, aes(dist, speed)) + geom_path()
      p3 <- ggplot(cars, aes(speed, dist)) + geom_point(color='blue')
    
      # this loop so that pdf device creates a new page for each plot
      lapply(list(p1, p2, p3), function(plot) plot)
    })
    dev.off()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-24
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多