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

标签 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()

我的问题是:为什么第二组图(即第二个 for 循环生成的 6)没有出现在 pdf 文件中?我能发现的唯一明显的区别是我将绘图存储在第一个循环中,而没有存储在第二个循环中。为什么 R 不在第二个循环中生成这些图并在完成后将它们保存在 pdf 中?

我期望这个例子的结果是 pdf 的第一页有四个子图,然后有 6 页,每页一个图。为什么没有生成这个?我本以为 R 会继续生成文件中的数字,直到调用 dev.off() 为止?

最佳答案

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

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()

关于r - 在 R 中附加 pdf 文件 - dev.off(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18184061/

相关文章:

将数据框中的某些值替换为 NA

r - 使用 tidyr unite 将某些选择列的列值与列名称组合

r - 使用 ggplot 为手动添加的行添加图例

Python Kivy 绘图与 MeshLinePlot 混淆

r - 如何将绘图组合循环到数据框中的剩余变量

Linux (Ubuntu 11.10) 中的 Matlab 在绘图中不显示 Unicode(希伯来语)

r - 如何在 R 中安装软件包 keras

R ggplot 和分面网格 : how to control x-axis breaks

r - 在 select_ 中构造变量名

r - 使用matplot在R中将不同的行绘制为不同的线