Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将python对象传递给rpy2中的R函数_Python_R_Rpy2 - Fatal编程技术网

将python对象传递给rpy2中的R函数

将python对象传递给rpy2中的R函数,python,r,rpy2,Python,R,Rpy2,我正在使用Python2使用Jupyter笔记本,并希望使用rpy2绘制热图 import numpy as np from rpy2 import robjects from rpy2.robjects import r, pandas2ri from rpy2.robjects import Formula, Environment from rpy2.robjects.vectors import IntVector, FloatVector from rpy2.robjects.lib

我正在使用Python2使用Jupyter笔记本,并希望使用rpy2绘制热图

import numpy as np
from rpy2 import robjects
from rpy2.robjects import r, pandas2ri
from rpy2.robjects import Formula, Environment
from rpy2.robjects.vectors import IntVector, FloatVector
from rpy2.robjects.lib import grid
from rpy2.robjects.packages import importr, data
from rpy2.rinterface import RRuntimeError
import warnings


a = np.array([1.5,2.3])
b = np.array([4.2,5.1])
c = np.array([[0.3, 0.6],[0.6, 0.3]])

r.image.plot(a,b,c)
告诉我错误

AttributeError: 'SignatureTranslatedFunction' object has no attribute 'plot'

如何正确地将参数传递到此函数中?规范:带有R3.3.3和Python 2.7的rpy2 2.5.6不起作用,因为
image.plot
显然来自包
字段。使用基本R的
图形库中的
图像
,例如:

import numpy as np
from rpy2.robjects.packages import importr
from rpy2.rinterface import RRuntimeError
import rpy2.robjects.numpy2ri
from IPython.display import Image, display
from rpy2.robjects.lib import grdevices

rpy2.robjects.numpy2ri.activate()
grf = importr('graphics')

a = np.array([1.5,2.3])
b = np.array([4.2,5.1])
c = np.array([[0.3, 0.6],[0.6, 0.3]])

with grdevices.render_to_bytesio(grdevices.png, width=1024, height=896, res=150) as img:
    grf.image(a, b, c)
display(Image(data=img.getvalue(), format='png', embed=True))
给予

要使用
image.plot
,必须运行

fields = importr('fields')

并将
grf.image(a,b,c)
替换为
fields.image.plot(a,b,c)

谢谢您的回复!我不能运行“from rpy2.robjects.lib import grdevices”,虽然它说“ImportError:无法导入名称grdevices”。但是,我可以运行'grdevices=importr('grdevices'),但它没有您使用的“render_to_bytesio”函数。我在R3.3.3和Python 2.7中使用rpy2.5.6,事实上它告诉我“rpy2.robjects.lib”“只能用“网格”来完成--我甚至不确定网格是什么--消息到底说了什么<代码>网格
是一个R包!消息说“ImportError:无法导入名称grdevices”。但我肯定有更多的R包(如字段!)