为什么rpy2.robjects.lib.grid.viewport()返回ListVector,但不返回视口?

时间:2016-01-12 02:45:30

标签: python ggplot2 rpy2

我试图使用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。

1 个答案:

答案 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中)