2013-02-17 38 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

相關問題