如何在 python 中设置 mfrow/mfcol

How to set mfrow/mfcol in python

通过 jupyter 中的 rpy2,您可以使用 R 对象直接从 python 绘制数据。如何在 python 中设置 par(mfrow=c(1,2)

例如,我想从 python 自动输入一个大小可变的矩阵,并使用 rpy2 绘制它(以及其他统计分析)。但是我不想绘制单个箱线图,而是希望输出所有箱线图。

这是一些示例代码

import rpy2.ipython
import rpy2.robjects as ro
import scipy as sp
import re #python for regex
from rpy2.robjects.packages import importr
rpy2.robjects.numpy2ri.activate()
%load_ext rpy2.ipython
%R

test=[[1,3,2],[6,5,7,8,9]]

def funtoanalyze(grouparray):
    a={}
    data=numpy.array(test)
    for ig in range(len(grouparray)):
        key=grouparray[ig]
        value=data[ig]
        a[key]=value
        next
    rbox=ro.r('boxplot')
    for gro in a:    
        datar=a[gro]
        ro.r('dev.new()')
        rbox(ro.FloatVector(datar[:]),xlab="",main=gro)
    return

funtoanalyze(["group33","group2"]) #only plots last group

您使用%load_ext rpy2.ipython表明您希望在jupyter notebook中拥有您的身影。

R 正在使用"graphical devices" 输出图形,调用par(mfrow=c(...)) 会将设置放入打开的图形设备或打开新的默认设备并设置参数。

"magic" %%R 正在扫描是否在默认设备上生成图形并将其显示在笔记本中。以下应该有效:

%%R

par(mfrow=c(1,2))
plot(0, 0)
plot(0, 0)

如果您不想使用 R 魔法,rpy2 中还有其他适用于 jupyter notebook 的实用程序。对于绘图,有一个上下文管理器(请参阅 https://bitbucket.org/rpy2/rpy2/issues/330/ipython-plotting-wrapper - 我不记得是否有更多文档),但最高级的实用程序是为 ggplot2 量身定制的。例如检查此幻灯片和以下幻灯片: https://lgautier.github.io/odsc-ppda-slides/#/5/13

完整的笔记本在这里:

https://github.com/lgautier/odsc-ppda-slides/blob/master/notebooks/slides.ipynb

有一个 docker 集装箱运输,里面装着 运行 笔记本所需的一切:

https://github.com/lgautier/pragmatic-polyglot-data-analysis