【发布时间】:2018-07-17 03:33:41
【问题描述】:
我正在尝试将使用rpy2 创建的ggplot2 R 对象的输出保存到Python 控制的缓冲区中。
我可以使用matplotlib 做到这一点,但我似乎无法通过rpy2 使用 ggplot2 做到这一点。
在matplotlib.pyplot 中,这可以通过以下方式完成:
import matplotlib.pyplot as plt
import io
import numpy
def test_save():
x = numpy.linspace(-5, 5)
y = 3*x + 2
fig = plt.figure()
plt.plot(x, f)
buf = io.BytesIO()
plt.savefig(buf, format = 'png')
return buf
ggplot2 尝试:
import io
import numpy
import rpy2.robjects as robjects
from pandas import DataFrame
import rpy2.robjects.lib.ggplot2 as ggplot2
def test_ggplot2_save():
x = numpy.linspace(-5, 5)
y = 3*x + 2
df = DataFrame({'x': x, 'y': y})
gp = ggplot2.ggplot(df)
pp = (gp
+ ggplot2.aes_string(x='x', y='y')
+ ggplot2.geom_point()
+ ggplot2.labs(title="MY DATA", x='x', y='y'))
# pp.plot()
buf = io.BytesIO()
robjects.r.ggsave(filename=buf, plot=pp, width=200, height=120, unit='mm')
错误:
NotImplementedError: 转换 'py2ri' 没有为类型“'”的对象定义
【问题讨论】:
标签: python python-3.x ggplot2 rpy2