5

是否可以将 rpy2(调用 ggplot2)与 IPython 笔记本一起使用,然后保存它们(并像其他笔记本一样在 NBViewer 上共享http://nbviewer.ipython.org/)?让 rpy2 ggplots 出现在笔记本中和/或以交互方式出现有什么挑战吗?如果有人可以提供一个示例会话及其在 IPython 中使用 rpy2 在笔记本中制作 ggplot2 图形的输出,那将会很有帮助。

4

2 回答 2

4

这是在没有查看 rmagic 代码的情况下编写的。他们有更聪明的方法(我有 11 行代码)。

import uuid
from rpy2.robjects.packages import importr 
from IPython.core.display import Image

grdevices = importr('grDevices')
def ggplot_notebook(gg, width = 800, height = 600):
    fn = '{uuid}.png'.format(uuid = uuid.uuid4())
    grdevices.png(fn, width = width, height = height)
    gg.plot()
    grdevices.dev_off()
    return Image(filename=fn)

尝试一下:

from rpy2.robjects.lib import ggplot2
from rpy2.robjects import Formula
datasets = importr('datasets')
mtcars = datasets.__rdata__.fetch('mtcars')['mtcars']
p = ggplot2.ggplot(mtcars) + \
    ggplot2.aes_string(x='mpg', y='cyl') + \
    ggplot2.geom_point() + \
    ggplot2.geom_smooth() + \
    ggplot2.facet_wrap(Formula('~ am'))

ggplot_notebook(p, height=300)
于 2013-03-11T16:04:26.560 回答
1

使用 rpy2 的 rmagic 扩展是可能的。不过,您似乎需要print()该图来显示它。这是一个示例会话: http: //nbviewer.ipython.org/5029692

如果你更喜欢直接使用rpy2,那一定是可以的。查看 ggplot2 的rpy2 文档。要将其放入笔记本中,您可以绘制到 PNG/SVG 设备,然后从 Python 端读取它(这就是 rmagic 所做的)。

于 2013-02-25T13:10:45.790 回答