2

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

私の質問は次のとおりです: プロットの 4 番目のセット、つまり 2 番目の for ループによって生成された 6 が pdf ファイルに表示されないのはなぜですか? 私が見つけることができる唯一の明らかな違いは、プロットを最初のループに保存し、2 番目のループには保存しないことです。R が 2 番目のループでこれらのプロットを生成し、完了後にそれらを pdf に保存しないのはなぜですか?

この例から期待される結果は、pdf の最初のページに 4 つのサブプロットがあり、その後に各ページに 1 つの図がある 6 ページが続くことです。これが生成されないのはなぜですか?dev.off() が呼び出されるまで、R はファイル内の数値を生成し続けると思っていたでしょうか?

4

1 に答える 1

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()
于 2013-08-12T11:10:44.547 に答える