Plot rpy2打印问题(设备无响应)rpy2.rinterface.NULL

Plot rpy2打印问题(设备无响应)rpy2.rinterface.NULL,plot,graphics,rpy2,Plot,Graphics,Rpy2,当我使用rpy2作为rpy2文档时,绘图有问题: Setup: 1. win10, 2. python3.5/3.6, 3. R 3.42, 4. rpy2 2.90 or 2.8x 5. Ipython 6.1.0 绘图后出现了一个图形,但图形有问题,标题变成:R Graphics:Device3(活动)(无响应),然后python崩溃,我需要重新启动它 我尝试了不同版本的rpy2或python,他们也有这个问题 谁能帮我 尝试以下解决方案,即使在2019年也似乎需要。如果预览中仅显示

当我使用rpy2作为rpy2文档时,绘图有问题:

Setup: 
1. win10,
2. python3.5/3.6, 
3. R 3.42,
4. rpy2 2.90 or 2.8x
5. Ipython 6.1.0
绘图后出现了一个图形,但图形有问题,标题变成:R Graphics:Device3(活动)(无响应),然后python崩溃,我需要重新启动它

我尝试了不同版本的rpy2或python,他们也有这个问题


谁能帮我

尝试以下解决方案,即使在2019年也似乎需要。如果预览中仅显示或未显示绘图,且单击时窗口没有反应: 加载绘图两次,并在两者之间使用r.windows()/r.X11()/r.quartz()(图形命令windows/Unix/Mac,根据-->查看多个图形,尽管至少X11()似乎也适用于windows)。 然后使用grdevices.dev_off()两次,并在其间选择等待时间,或者只执行一次,然后随时用一个独立的grdevices.dev_off()语句关闭它

In [26]: import rpy2.robjects as robjects
...:
...: r = robjects.r
...:
...: x = robjects.IntVector(range(10))
...: y = r.rnorm(10)
...:
...: r.X11()
...:
...: 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", col="red")
...:
Out[26]: rpy2.rinterface.NULL
如果窗口仍然崩溃,则执行grdevices.dev_off(),无需强制关闭

备选方案:根本不显示绘图,而是保存图片

import time
from rpy2.robjects.packages import importr
from rpy2.robjects import r
from rpy2.robjects.lib import ggplot2
grdevices = importr('grDevices')
rprint = robjects.globalenv.get("print")

pp = ggplot2.ggplot(mtcars) + \
     ggplot2.aes_string(x='wt', y='mpg', col='factor(cyl)') + \
     ggplot2.geom_point() + \
     ggplot2.geom_smooth(ggplot2.aes_string(group = 'cyl'), method = 'lm')

rprint(pp)
r.windows()
rprint(pp)
grdevices.dev_off()

#From here optional, if you want a waiting time
#Elsewise close the plot manually afterwards with grdevices.dev_off()
time.sleep(10)
grdevices.dev_off()

您是否尝试过使用不同的系统语言,如英语?是否向rpy2的开发人员报告了此问题?没有针对Windows的rpy2的官方支持。在VM或Docker容器中尝试Linux。删除指令r.X11()时会发生什么?
grdevices.dev_copy(device = r.png, filename = "plot.png", width = 1000, height = 500)
rprint(pp)
grdevices.dev_off()