【问题标题】:Can't print to pdf ggplot charts [duplicate]无法打印到pdf ggplot图表[重复]
【发布时间】:2017-03-15 16:23:43
【问题描述】:

可能重复:
Generate multiple graphics from within an R function

发生在我身上的很奇怪的事情:以下代码无法打印到 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 中重现。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

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

    【讨论】:

    • 谢谢。我很惊讶 R 有时是多么违反直觉^Woften。我必须说下面的ggsave 方法对我来说更有意义。
    【解决方案2】:

    @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"
    

    【讨论】:

    • 实际上他的循环工作正常,因为他没有索引到outnames,他只是在使用该值。我也会这样做。
    • 很好地发现了@Ken,这是我自己对@Gappy的愚蠢——将消除噪音!
    • @Ken 嗯,似乎有些东西阻止了我接受您的编辑。然后我现在也无法编辑帖子...
    • @Shog9 现在已经为我批准了编辑(在发布关于该问题的元数据之后)。
    • 除了像par(mfrow) 那样将所有绘图保存到同一个文件之外,您如何做到这一点?
    猜你喜欢
    • 2020-09-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多