У меня есть простой скрипт, который создает график рассеяния ggplot2, используя rpy2. Однако фигура не отображается. Возвращенный объект графика - 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 и 3.0.2 - на рисунке мигает, происходит сбой программы и объект графика имеет тип NoneType
- Версия 3.0.3 - мигает пустой холст, происходит сбой программы и объект графика NoneType
- Версии 3.0.4 и 3.0.5 - мигает рисунок, происходит сбой программы и объект графика NoneType
- Версии 3.1.0 и 3.2.0 - рисунок не отображается, а объект графика имеет тип NoneType
- Версии с 3.2.1 по 3.2.4 - rpy2 не удается установить с pip
Я также прочитал ветку здесь и перешел по предложенным там ссылкам, но я не смог адаптировать предложенные действия к моей проблеме.
Для полноты здесь приведены подробные сведения о Я использую среду: Python 3.7.5, R версия 3.6.0, MacOS Catalina Версия 10.15.2.