如何在Rpy2中使用lattice并将结果保存为pdf?

2 投票
2 回答
807 浏览
提问于 2025-04-17 16:09

我在这里查看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可以显示图形。但是,当我尝试通过先执行:

r.pdf("myfile.pdf")

然后再调用我的lattice时,结果却是一个空的pdf文件。如果我用ggplot2或者R的基础功能做同样的事情(先调用r.pdf,然后绘图),就能得到一个正常的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

解决办法是使用:

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

不知道为什么其他的选项都不管用。

2

在打印命令之后,你需要用一些类似于 dev.off() 的命令。

也就是说,为了把你的图表保存为pdf,基本的步骤是:

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

如果不调用 dev.off(),你保存的pdf文件会是空的。


根据 这个来源,在 rpy2 中,可能有类似的命令是

grdevices.dev_off()

撰写回答