2013-02-17 36 views
2

我正在关注rpy2的文档(http://rpy.sourceforge.net/rpy2/doc-2.1/html/graphics.html?highlight=lattice)。我可以成功地绘制交互使用lattice从rpy2,例如:如何在Rpy2中使用格并将结果保存为pdf?

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,然后绘图)ggplot2或与R基地,然后我得到一个工作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

在打印命令之后,您需要一些等效的dev.off()

也就是说,为了你的图表保存为PDF格式,一般概述:

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

未能调用dev.off()将导致一个空的PDF文件。


this source,看来在rpy2等效可能是

grdevices.dev_off() 
+0

谢谢,我试过了(见编辑),但它仍然产生空的阴谋 – user248237dfsf 2013-02-17 06:52:31

+0

@ user248237,它仍然无法工作? (如果是这样,也许删除复选标记)。如果它仍然是一个问题,只是为了踢脚踢,请尝试以下方法:在调用'grdevices.dev_off()'的地方,而不是一次调用它,反复调用它2到3次。 – 2013-02-18 00:14:41

0

的解决方案是使用:

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

出于某种原因,其他变体不这样做的伎俩。

+2

rpy2中的'grdevices.dev_off()'与'grDevices :: dev.off()'完全等价,它本身等同于'robjects.r [“dev.off”]()'如果不是用户定义的函数' dev.off'存在于R的全球环境中。您可能想要检查进行测试时使用的工作环境和代码。 – lgautier 2013-02-17 07:12:42

相关问题