Установка задач с помощью решетки с использованием RPY2

StackOverflow https://stackoverflow.com/questions/4748872

  •  13-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь создать тепловую карту или график цветовой интенсивности, используя данные из массива Numpy, используя RPY2 и решетку. Я использую Python 2.6.2, R 2.10.1, RPY2 2.1.9, не уверен, какая версия решетки. Я получил это отлично, за исключением того, что мне нужно изменить настройку решетки по умолчанию для рампы цвета, используемой для построения уровней соответствующей переменной (z). В частности, я хочу серогойс вместо пурпурного рампа по умолчанию. Вот код для генерации фиктивного данных и создания уровня серого в ванили R:

library(lattice)

x <- rep(seq(1,10), each=10)
y <- rep(seq(1,10), 10)
z <- abs(rnorm(100))
z <- z/max(z)
df <- data.frame(x=x, y=y, z=z)

grayvector <- gray(seq(0,1,1/100))

foo <- levelplot(z ~ x * y, data=df, col.regions = grayvector)
print foo

С RPY2 я не могу установить аргумент полковника. Согласно документации, RPY2 должен преобразовать любой. символы в функциональных аргументах к _. Однако это не работает, поскольку использование COL_REGION приводит к игнорированию аргумента. Вот код Python, который производит уровень уровня, но без серого:

from __future__ import division
import rpy2.robjects as ro
from rpy2.robjects.packages import importr
r = ro.r
lattice = importr("lattice")

grayvector = r.gray( r.seq(0, 1, 1/100))   
x = r.rep(r.seq(1,10), each=10)
y = r.rep(r.seq(1,10), 10)
z = r.abs(r.rnorm(100))

df = {'x': x, 'y' :y, 'z':z}
df = ro.DataFrame(foo)

formula = ro.Formula('z ~ x * y')
formula.getenvironment()['z'] = df.rx2('z')
formula.getenvironment()['y'] = df.rx2('y')
formula.getenvironment()['z'] = df.rx2('z')

foo = lattice.levelplot(formula, data=df, col_regions = grayvector)
print foo

Кто -нибудь знает, как использовать аргументы функции решетки с. в них в RPY2?

Это было полезно?

Решение

Вам нужно указать картирование аргументов вручную:

from rpy2.robjects.functions import SignatureTranslatedFunction
lattice = importr("lattice")
lattice.levelplot = SignatureTranslatedFunction(lattice.levelplot,
                                                init_prm_translate={'col_regions': 'col.regions'})
foo = lattice.levelplot(formula, data=df, col_regions=grayvector)

А также проверьте это: http://rpy.sourceforge.net/rpy2/doc-2.2/html/robjects_functions.html

Важно понимать, что перевод осуществляется путем осмотра подписи функции R, и это не так уж много угаснуть из r ellipsis '...' всякий раз, когда присутствует.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top