Python и Rpy2: Вызов функции построения графика с опциями, которые имеют в них

Я только начинаю изучать, как использовать rpy2 с Python. Я в состоянии сделать простые графики и такой, но я столкнулся с проблемой, которую используют много опций в R ".". Например, вот вызов R, который работает:

barplot (t, col=heat.colors (2), имена arg=c ("pwn", "pwn2"))

где t является матрицей.

Я хочу использовать тот же вызов в Python, но он отклоняет "." часть names.arg. Мое понимание было то, что в Python Вы заменяете "." "_", таким образом, names_arg, например, но это не работает также. Я знаю, что это - основная проблема, таким образом, я надеюсь, что кто-то видел это и знает фиксацию. Спасибо!

9
задан Noah 23 January 2010 в 17:17
поделиться

3 ответа

Вы можете использовать словарь здесь для именованных аргументов (, используя ** ) как описано в документах, и вызов R напрямую для функций Отказ Также помните, что RPY2 ожидает его собственных векторных объектов . Да, это немного неловко, но на стороне плюс вы должны быть в состоянии сделать что-либо в RPY2, вы можете сделать в R.

from rpy2 import robjects
color = robjects.r("heat.colors")()
names = robjects.StrVector(("pwn", "pwn2"))
robjects.r.barplot(t, col=color, **{"names.arg":names})

(обратите внимание, что это для RPY2 версии 2.0.x; есть некоторые изменения в Relaned 2.1 , который у меня еще не было возможности посмотреть.)

9
ответ дан 3 November 2019 в 01:56
поделиться

Я не знаю, примет ли RPY, но вы можете иметь параметры ключевых слов с периодами в них. Вы должны пропустить их через словарь. Как это:

>>> def f(**kwds): print kwds
... 
>>> f(a=5, b_c=6)
{'a': 5, 'b_c': 6}
>>> f(a=5, b.c=6)
Traceback (  File "<interactive input>", line 1
SyntaxError: keyword cant be an expression (<interactive input>, line 1)
>>> f(**{'a': 5, 'b.c': 6})
{'a': 5, 'b.c': 6}
1
ответ дан 3 November 2019 в 01:56
поделиться

с RPY2-2.1.0, один из способов написать было бы:

from rpy2.robjects.packages import importr
graphics = importr("graphics")
grdevices = importr("grDevices")

graphics.barplot_default(t, 
                         col = grdevices.heat_colors(2),
                         names_arg = StrVector(("pwn", "pwn2")))

необходимость использовать barplot_default (скорее, что barplot) связано с Обширное использование эллипсовых ... 'в сигнатурах R'SFunction и к тому, что перевод названия параметра «Сохранить» Анализ r код функции содержит.

Подробнее, и пример функции для выполнения систематического перевода из '.' «_»: http://rpy.sourceforge.net/rpy2/doc-2.1/html/robjects.html#functions

0
ответ дан 3 November 2019 в 01:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: