2

我在这里关注 rpy2 的文档(http://rpy.sourceforge.net/rpy2/doc-2.1/html/graphics.html?highlight=lattice)。我可以使用latticerpy2 成功地交互式绘图,例如:

iris = r('iris')
p = lattice.xyplot(Formula("Petal.Length ~ Petal.Width"),
                   data=iris)
rprint = robj.globalenv.get("print")
rprint(p)

rprint显示图表。但是,当我尝试通过首先执行以下操作将图形保存为 pdf 时:

r.pdf("myfile.pdf")

然后我的lattice电话,它不起作用,而是导致一个空的pdf。如果我对 R 基础做同样的事情(调用r.pdf,然后绘图)ggplot2,那么我会得到一个工作 pdf。是否lattice需要 Rpy2 中的任何特殊内容才能将结果保存到 PDF 文件?以下也不起作用:

iris = r('iris')
r.pdf("myfile.pdf")
grdevices = importr('grDevices')
p = lattice.xyplot(Formula("Petal.Length ~ Petal.Width"),
                   data=iris)
rprint = robj.globalenv.get("print")
rprint(p)
grdevices.dev_off()

谢谢你。

4

2 回答 2

2

dev.off()您需要在 print 命令之后进行一些等效的操作。

也就是说,为了将您的图表保存为 pdf,一般大纲是:

pdf(...)
print(....)
dev.off()

调用失败dev.off()将导致一个空的 pdf 文件。


这个来源看来,等价的rpy2可能是

grdevices.dev_off()
于 2013-02-17T06:44:16.420 回答
0

解决方案是使用:

robjects.r["dev.off"]()

出于某种原因,其他变体无法解决问题。

于 2013-02-17T06:55:37.020 回答