如何在Rpy2中使用lattice并将结果保存为pdf?
我在这里查看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()