无法打印到pdf ggplot图表

gap*_*ppy 24 r ggplot2

可能重复:
从R函数中生成多个图形

发生在我身上的奇怪事情:以下代码无法打印到pdf设备:

outnames <- c("1.pdf", "2.pdf")
for (n in outnames){
    pdf(n)
    qplot(1:10)
    dev.off()
}
Run Code Online (Sandbox Code Playgroud)

即使生成了pdf文件,也不会打印任何内容到pdf.然而,

pdf(outnames[2])
qplot(1:10)
dev.off()
Run Code Online (Sandbox Code Playgroud)

会很好地工作.知道为什么吗?转载于R 2.11.1.

Dir*_*tel 37

Gappy,闻起来像FAQ 7.22 - 所以请试试print(qplot(1:10)).

  • 谢谢。我很惊讶 R 有时^Woften 是多么违反直觉。我必须说下面的“ggsave”方法对我来说更有意义。 (3认同)

Rei*_*son 11

@Dirk解释了为什么会发生这种情况(关闭自动打印),但是打开设备,在设备上生成绘图,关闭设备的替代方法是ggsave().例如:

p1 <- qplot(1:10)
ggsave("p1.pdf", plot = p1)
Run Code Online (Sandbox Code Playgroud)

或通过循环:

outnames <- c("1.pdf", "2.pdf")
for (n in outnames){
    p2 <- qplot(1:10)
    ggsave(n, plot = p2)
}
Run Code Online (Sandbox Code Playgroud)

最后,我们得到了我们要求的所有生成的图.

> list.files(pattern = ".pdf$")
[1] "1.pdf"                  "2.pdf"                 
[3] "p1.pdf"
Run Code Online (Sandbox Code Playgroud)