rPy2 S3方法图不适用于robCompositions包

时间:2017-01-16 06:08:41

标签: python r plot rpy2

我正在尝试根据robCompositions中的R包生成一个情节。我正在使用显示here的示例。有关该软件包的详细信息,请参见here

使用robCompositions包进行一些聚类分析后生成此图。

我的系统是64位的Ubuntu 16.10。我使用以下方式设置R工作目录:

setwd('/home/UserRob/Downloads')

我使用以下方法安装了包和依赖项:

install.packages(c('data.table','pls','robCompositions'))

我可以使用以下R文件在rtest.R中执行此示例中的代码:

library(robCompositions)
data(expenditures)
x <- expenditures
rr3 <- clustCoDa(x, k=6, distMethod = "Aitchison", method = "single",
transformation = "identity", scale = "none")
plot(rr3)
dev.off()

当我使用Rscript /home/UserRob/Downloads/rtest.R在Ubuntu中执行此操作时,我会将一个图保存到/home/UserRob/Downloads/Rplots.pdf

我尝试使用rPy2中的以下代码在rtest.py中运行此代码:

from rpy2.robjects import r
r.library('robCompositions')
r('data')('expenditures')
x = r('expenditures')
rr3 = r('clustCoDa')(x,k=6,distMethod='Aitchison',method='single',scale='none',
transformation='identity')
r('plot')(rr3)

当我使用python /home/UserRob/Downloads/rtest.py执行此操作时,不会生成绘图。 Python变量rr3与上面R用法的变量相同。因此,代码运行正常,但最后一行 - r('plot')(rr3)除外。似乎r('plot')命令根本没有运行。我还在rPy2中尝试了以下内容:

from rpy2 import robjects
grdevices = importr("grDevices")
graphics = importr("graphics")
from rpy2.robjects import r
r.library('robCompositions')
r('data')('expenditures')
x = r('expenditures')
rr3 = r('clustCoDa')(x,k=6,distMethod='Aitchison',method='single',scale='none',
transformation='identity')
grdevices.png("rtest.png")
graphics.plot(rr3)
grdevices.dev_off()

然而,这也给了我相同的结果 - 情节没有保存到rtest.png。第graphics.plot(rr3)行之前的所有代码似乎都能正常运行。

R's OOPs的文档中,我认为我使用plot()的方式与显示的plot.lm()相同。似乎plot()是类clustCoDa的类的S3方法(如文档here所示),我只需要使用plot() - 在文档的第6行,它实际上只链接到通常的plot() function

问题:

plot()中的rPy2功能是否存在问题?

修改

我在Windows 7 64-bit中重复了这个问题。以下是详细信息:

Python详细信息:

  • Python 2.7.8

R详情:

  • R x64 3.3.2
  • 个人图书馆文件夹:C:\Users\UserRob\Documents\R\win-library\3.3

Windows环境变量:

R_USER: C:\Python27\Lib\site-packages\rpy2
R_LIBS: C:\Users\UserRob\Documents\R\win-library\3.3
R_HOME: C:\Program Files\R\R-3.3.2

我的 rtest_win.py 文件:

from rpy2.robjects import r
r('.libPaths( c( .libPaths(), "C:/Users/UserRob/Documents/R/win-library/3.3") )')
r.library('robCompositions')
r('data')('expenditures')
x = r('expenditures')
rr3 = r('clustCoDa')(x,k=6,distMethod='Aitchison',method='single',scale='none',
transformation='identity')
r('plot')(rr3)

与Linux一样,代码运行但plot()命令不生成文件。这使我怀疑问题出在rPy2rPy2无法使用robCompositions软件包的plot() S3方法生成图表。

0 个答案:

没有答案