我在这里关注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()
谢谢。
答案 0 :(得分:2)
打印命令后需要等效dev.off()
。
也就是说,为了将图形保存为pdf,概要是:
pdf(...)
print(....)
dev.off()
无法调用dev.off()
将导致空的pdf文件。
,似乎rpy2
中的等效内容可能是
grdevices.dev_off()
答案 1 :(得分:0)
解决方案是使用:
robjects.r["dev.off"]()
出于某种原因,其他变种不能解决问题。