我试图使用rpy2.robjects.lib.grid.viewport()
在一个图中绘制几个子图,这就是代码:
from rpy2.robjects.lib import grid
from rpy2.robjects.packages import importr
import rpy2.robjects.lib.ggplot2 as ggplot2
from rpy2 import robjects
dataf=robjects.DataFrame({'year':IntVector([2000,2001,2002,2001,2002]),
'pop':IntVector([1.5,1.7,3.6,2.4,2.9]),'GDP':IntVector([4,5.3,6,7,8])})
grid.newpage()
lt=grid.layout(1,2)
vp=grid.viewport(layout=lt)
print(type(vp))
vp.push()
gp=ggplot2.ggplot(dataf)
vp = grid.viewport(**{'layout.pos.col':1, 'layout.pos.row': 1})
pp=gp+ggplot2.aes_string(x='pop',y='GDP')+ggplot2.geom_point()
pp.plot(vp=vp)
vp = grid.viewport(**{'layout.pos.col':2, 'layout.pos.row': 1})
pp=gp+ggplot2.aes_string(x='pop',y='GDP',col='factor(year)')+ggplot2.geom_point()
pp.plot(vp=vp)
但执行" vp.push()"时出错。错误如下:
追踪(最近一次通话): File" F:\ pythonspace \ pythontoR2.py",第15行,in vp.push() AttributeError:' ListVector'对象没有属性' push'
我使用的是python3.4和R3.2.1,rpy2 2.7.6。
答案 0 :(得分:0)
这似乎是rpy2.robjects.lib.grid
的疏忽。
尝试替换
vp=grid.viewport(layout=lt)
与
vp=grid.Viewport(grid.viewport(layout=lt))
(并且可能会针对rpy2的错误跟踪器提交错误报告)
注意:此归档为issue #350,并在回购中修复(将包含在rpy2版本2.8.0中)