无法打印 pdf ggplot 图表

发布于 2024-10-14 15:03:00 字数 501 浏览 1 评论 0原文

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

发生了非常奇怪的事情对我来说:以下代码无法打印到 pdf 设备:

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

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

pdf(outnames[2])
qplot(1:10)
dev.off()

将会完美地工作。知道为什么吗?转载于 R 2.11.1。

Possible Duplicate:
Generate multiple graphics from within an R function

Very strange thing happening to me: the following code fails to print to pdf device:

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

won't print anything to pdf, even though a pdf file is generated. However,

pdf(outnames[2])
qplot(1:10)
dev.off()

will work perfectly well. Any idea why? Reproduced in R 2.11.1.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

隔岸观火 2024-10-21 15:03:00

Gappy,闻起来像常见问题解答 7.22 - 所以请尝试 print(qplot(1:10))

Gappy, that smells like the FAQ 7.22 -- so please try print(qplot(1:10)).

醉生梦死 2024-10-21 15:03:00

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

p1 <- qplot(1:10)
ggsave("p1.pdf", plot = p1)

或通过循环:

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

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

> list.files(pattern = ".pdf$")
[1] "1.pdf"                  "2.pdf"                 
[3] "p1.pdf"

@Dirk explains why this is happening (auto printing turned off), but an alternative to opening the device, generating the plot on the device, closing the device is ggsave(). For example:

p1 <- qplot(1:10)
ggsave("p1.pdf", plot = p1)

or via a loop:

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

At the end of that we have all the generated plots we asked for.

> list.files(pattern = ".pdf$")
[1] "1.pdf"                  "2.pdf"                 
[3] "p1.pdf"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文