首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python环境中为rpy2提供x11()?

如何在python环境中为rpy2提供x11()?
EN

Stack Overflow用户
提问于 2018-08-30 05:57:38
回答 1查看 229关注 0票数 1

我正在尝试使用rpy2库在Python3中绘制一个简单的图形:

代码语言:javascript
复制
import rpy2.robjects as robjects

r = robjects.r

x = robjects.IntVector(range(10))
y = r.rnorm(10)

r.X11(1,1)

r.layout(r.matrix(robjects.IntVector([1,2,3,2]), nrow=2, ncol=2))
r.plot(r.runif(10), y, xlab="runif", ylab="foo/bar"

但是我得到了这个错误:

代码语言:javascript
复制
/Users/Irbin/anaconda3/lib/python3.6/site-packages/rpy2/rinterface/__init__.py:145: RRuntimeWarning: Error in (function (display = "", width, height, pointsize, gamma, bg,  : 
X11 is not available
warnings.warn(x, RRuntimeWarning)---------------------------------------------------------------------------
RRuntimeError                             Traceback (most recent call last)
<ipython-input-3-bdd0b9cb9184> in <module>()
----> 1 import codecs, os, ast;__pyfile = codecs.open('''/var/folders/7q/2v_j6pcx0bb9jq2r_4b2b30w0000gn/T/pyDtdUIr''', encoding='''utf-8''');__code = __pyfile.read().encode('''utf-8''');__pyfile.close();os.remove('''/var/folders/7q/2v_j6pcx0bb9jq2r_4b2b30w0000gn/T/pyDtdUIr''');__block = ast.parse(__code, '''/Users/Irbin/Downloads/scratch.py''', mode='exec');__last = __block.body[-1];__isexpr = isinstance(__last,ast.Expr);__block.body.pop() if __isexpr else None;exec(compile(__block, '''/Users/Irbin/Downloads/scratch.py''', mode='exec'));eval(compile(ast.Expression(__last.value), '''/Users/Irbin/Downloads/scratch.py''', mode='eval')) if __isexpr else None

~/Downloads/scratch.py in <module>()
  6 # r Into (run inside sub codes)
  7 
----> 8 
  9 import pdb
 10 

~/anaconda3/lib/python3.6/site-packages/rpy2/robjects/functions.py in __call__(self, *args, **kwargs)
176                 v = kwargs.pop(k)
177                 kwargs[r_k] = v
--> 178         return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
179 
180 pattern_link = re.compile(r'\\link\{(.+?)\}')

~/anaconda3/lib/python3.6/site-packages/rpy2/robjects/functions.py in __call__(self, *args, **kwargs)
104         for k, v in kwargs.items():
105             new_kwargs[k] = conversion.py2ri(v)
--> 106         res = super(Function, self).__call__(*new_args, **new_kwargs)
107         res = conversion.ri2ro(res)
108         return res

RRuntimeError: Error in (function (display = "", width, height, pointsize, gamma, bg,  : 
X11 is not available

我用谷歌搜索了一下,我知道X11对于操作系统的图形来说是必要的。当我用rpy2检查它时,我得到了以下信息:

代码语言:javascript
复制
print(robjects.r("capabilities()"))

jpeg         png        tiff       tcltk         X11        aqua 
TRUE        TRUE        TRUE        TRUE       FALSE        TRUE 
http/ftp     sockets      libxml        fifo      cledit       iconv 
TRUE        TRUE        TRUE        TRUE        TRUE        TRUE 
NLS     profmem       cairo         ICU long.double     libcurl 
TRUE        TRUE        TRUE        TRUE        TRUE        TRUE 

这表明X11()不可用(FALSE),但如果我运行本机R并编写相同的指令X11(),如您所见:

代码语言:javascript
复制
capabilities()

jpeg         png        tiff       tcltk         X11        aqua 
TRUE        TRUE        TRUE        TRUE        TRUE        TRUE 
http/ftp     sockets      libxml        fifo      cledit       iconv 
TRUE        TRUE        TRUE        TRUE       FALSE        TRUE 
NLS     profmem       cairo         ICU long.double     libcurl 
TRUE        TRUE        TRUE        TRUE        TRUE        TRUE

那么,如何在python环境中为rpy2提供x11()呢?

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2018-10-16 10:17:55

X11在我这一边工作。

每当您观察到rpy2中的R与“系统上的常规R”之间的差异时,这通常意味着使用了不同的R安装。

有一个小的实用程序模块可以告诉用户更多关于R rpy2正在使用的信息:

代码语言:javascript
复制
python -m rpy2.situation

这是否与具有x11的R相匹配?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52086621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档