2017-01-03 10 views
1

Через rpy2 в jupyter вы можете создавать свои данные непосредственно с python с помощью R объектов. Как вы можете установить par(mfrow=c(1,2) в python?Как установить mfrow/mfcol в python

Например, я хочу автоматически подавать матрицу с переменным размером от 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 

enter image description here

ответ

1

Использование %load_ext rpy2.ipython предполагает, что вы хотите иметь свою фигуру в jupyter ноутбука.

R использует «графические устройства» для вывода цифр, а вызов par(mfrow=c(...)) либо поместит параметр в открытое графическое устройство, либо откроет новое устройство по умолчанию и установит параметр.

«Магия» %%R сканирует, если фигуры были созданы на устройствах по умолчанию и отображают их в записной книжке. Следующие должны работать:

%%R 

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

Если вы не хотите использовать R магию, есть и другие утилиты для jupyter ноутбуков в rpy2. Для построения графика есть менеджер контекста (см. 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

Существует грузчик контейнерных перевозок всех необходимые для запуска ноутбука:

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

+0

Спасибо за ваш ответ @lgautier. Действительно, я использую jupyter. Я надеялся избежать «%% R», так как я все еще изучаю, как вводить/выводить данные в/из него. Если вы знаете способ сделать это с помощью robjects, я был бы признателен, если бы вы могли добавить его к вашему ответу (но, пожалуйста, не удаляйте часть '%% R') – Sosi

+0

Я добавил немного о построении в записной книжке без'% % r'. – lgautier

+0

Большое спасибо @lgautier! – Sosi