ipython笔记本R cell magic作为python函数

时间:2015-01-01 02:08:27

标签: r ipython ipython-notebook rpy2

我有一些%rmagic接收数据帧并绘制它。我不能用python中的当前ggplot实现来做到这一点。所以我想知道我是否可以使用函数将数据帧传递给包含R代码并可能返回它的单元格。这就是我的想法:

 #cell 1
 def plot_in_r(dataframe):
     pass_to_cell_2(dataframe)


 #cell 2
 %%R -i dataframe 
 ggplot(dataframe) + geom_bar()

它不一定是其他单元格的单元格,但是我需要将一些东西传递给R并让它通过我可以重复使用的函数绘制在笔记本中。

1 个答案:

答案 0 :(得分:10)

我想最简单的方法是在R中定义一个带有数据框并包含绘图逻辑的函数。

必需品进口:

import rpy2
import pandas as pd
%load_ext rpy2.ipython
%R require("ggplot2")

创建虚拟数据框:

df1 = pd.DataFrame({"A": [1, 2, 3], "B": [1, 2, 3]})
df2 = pd.DataFrame({"A": [3, 2, 1], "B": [1, 2, 3]})

编写绘图功能:

%%R
plot_gg <- function(df) {
    p <- ggplot(data=df) + geom_line(aes(x=A, y=B))
    print(p)
}

最后只用两行代码绘图:

for df in df1, df2:
    %Rpush df
    %R plot_gg(df)