【发布时间】:2023-09-20 09:33:01
【问题描述】:
我正在尝试使用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()”时出错。错误如下:
Traceback(最近一次调用最后一次): 文件“F:\pythonspace\pythontoR2.py”,第 15 行,在 vp.push() AttributeError: 'ListVector' 对象没有属性 'push'
我正在使用 python3.4 和 R3.2.1,rpy2 2.7.6。
【问题讨论】: