r语言 - ggplot2 plot 函数返回带有 rpy2 的 NoneType 对象



>我有一个简单的脚本,它使用 rpy2 创建 ggplot2 散点图。但是,该数字未显示。返回的绘图对象是 NoneType。这是脚本:

from rpy2 import robjects
import rpy2.robjects as ro
from rpy2.robjects.lib import grid
from rpy2.robjects.packages import importr, data
import rpy2.robjects.lib.ggplot2 as ggplot2
rprint = robjects.globalenv.find("print")
stats = importr('stats')
grdevices = importr('grDevices')
base = importr('base')
datasets = importr('datasets')
grid.activate()
mtcars = data(datasets).fetch('mtcars')['mtcars']
gp = ggplot2.ggplot(mtcars)    
pp = gp + ggplot2.aes_string(x='wt', y='mpg') + 
ggplot2.geom_point()
print('type(pp):',type(pp))
fig = pp.plot()
print('type(fig):',type(fig))
pp.plot()

我能够将图保存到 png 文件中,因此大部分代码都可以正常工作。在对此进行故障排除时,我尝试使用多个版本的 rpy2,结果各不相同:

版本 3.0.1 和
  1. 3.0.2 -- 图形闪烁、程序崩溃和打印对象为 NoneType
  2. Version 3.0.3 -- 空画布闪烁,程序崩溃,打印对象为 NoneType
  3. 版本 3.0.4 和
  4. 3.0.5 -- 图形闪烁、程序崩溃和打印对象为 NoneType
  5. 版本 3.1.0 和 3.2.0 -- 图形不显示,打印对象为 NoneType
  6. 版本 3.2.1 到 3.2.4 -- rpy2 无法使用 pip 安装。

我也阅读了这里的线程并按照那里建议的链接进行操作,但我无法根据我的问题调整建议的操作。

为了完整起见,以下是我正在使用的环境的详细信息:Python 3.7.5,R 版本 3.6.0,MacOS Catalina 版本 10.15.2。

描述"安装失败"的更多详细信息将有助于猜测Catalina发生了什么。在Github操作上,最新的OSX是High Sierra(10.13(,安装和测试都在那里工作:https://github.com/rpy2/rpy2/runs/378570566

否则,您的代码似乎没有使用grdevices(或通过importr()导入的任何其他 R pacakges(。R可以使用"静态"图形设备(例如,PNG文件(或"交互式"图形设备(例如,X11,OSX上的Quartz(。 有关详细信息,请参阅 https://rpy2.github.io/doc/v3.2.x/html/graphics.html#graphical-devices。

交互式设备可能需要处理事件循环才能更新(请参阅 https://rpy2.github.io/doc/v3.2.x/html/interactive.html#r-event-loop(,尽管如果不这样做,预计不会发生程序崩溃。

您可以尝试确定系统上默认打开的图形设备是什么(除非已经有一个打开的设备 R 将打开默认类型的设备(,作为确定问题所在的第一步。

最新更新