在R中添加pdf文件 - dev.off()

时间:2013-08-12 09:52:21

标签: r plot

如何用R保存数字到pdf。请考虑以下示例:

require(ggplot2)
require(gridExtra)
TopFolder <- "...directory on my drive"
setwd(TopFolder)


pdf(file = paste(TopFolder,"figures","example.pdf",sep = "\\"))

g <- list()
for(i in 1:4){
  dat <- data.frame(d1 = c(1:10),
                    d2 = runif(10))
  g[[i]] <- qplot(x = d1, y = d2,
        data = dat)
}
grid.arrange(g[[1]],g[[2]],g[[3]],g[[4]])  

for(i in 1:6){
  dat <- data.frame(d1 = c(1:20),
                    d2 = runif(20))
  qplot(x = d1, y = d2,
                  data = dat)
} 

dev.off()

我的问题是:为什么sesond设置的图表,即第二个for循环生成的6不显示在pdf文件中?我能看到的唯一明显区别是我将图存储在第一个循环中而不是第二个循环中。为什么R不会在第二个循环中生成这些图并在完成后将它们保存在pdf中?

我希望这个例子的结果是让pdf的第一页有四个子图,然后有6页跟随每页中的一个图。为什么不生成这个?我会想到R会在调用dev.off()之前继续生成文件中的数字吗?

1 个答案:

答案 0 :(得分:4)

...并且将所有命令从上面放在一起

require(ggplot2)
require(gridExtra)
TopFolder <-"...directory on my drive"
setwd(TopFolder)


pdf(file = file.path(TopFolder,"figures","example.pdf"), onefile=TRUE)
g <- list()
for(i in 1:4){
dat <- data.frame(d1 = c(1:10),
                  d2 = runif(10))
g[[i]] <- qplot(x = d1, y = d2,
                  data = dat)
}
grid.arrange(g[[1]],g[[2]],g[[3]],g[[4]])  

gg <- list()

# each of this plots will be on a separate page
for(i in 1:6){
  dat <- data.frame(d1 = c(1:20),
                    d2 = runif(20))

  # here a print is necessary
  print(qplot(x = d1, y = d2,
        data = dat))
} 
dev.off()