【问题标题】:How to set mfrow/mfcol in python如何在 python 中设置 mfrow/mfcol
【发布时间】:2017-05-17 15:53:32
【问题描述】:

通过 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

【问题讨论】:

    标签: python r jupyter rpy2


    【解决方案1】:

    您对%load_ext rpy2.ipython 的使用表明您希望将您的图形放在jupyter 笔记本中。

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

    “魔法”%%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

    【讨论】:

    • 感谢您的回答@lgautier。确实,我正在使用 jupyter。我希望避免%%R,因为我仍在学习如何将数据输入/输出到它。如果您知道使用 robjects 的方法,如果您可以将其添加到您的答案中,我将不胜感激(但请不要删除 %%R 部分)
    • 我在没有%%R的情况下添加了一些关于在笔记本中绘图的内容。
    猜你喜欢
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2018-03-21
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多