如何在Rpy2中使用晶格并将结果保存到pdf?

时间:2013-02-17 06:42:06

标签: python r lattice rpy2

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

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.pdf或使用R base执行相同的操作(调用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()

谢谢。

2 个答案:

答案 0 :(得分:2)

打印命令后需要等效dev.off()

也就是说,为了将图形保存为pdf,概要是:

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

无法调用dev.off()将导致空的pdf文件。


来自this source

,似乎rpy2中的等效内容可能是

grdevices.dev_off()

答案 1 :(得分:0)

解决方案是使用:

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

出于某种原因,其他变种不能解决问题。