質問

rpy2とlatticeを使用して、numpyアレイからのデータを使用してヒートマップまたはカラー強度プロットを作成しようとしています。 Python 2.6.2、R 2.10.1、RPY2 2.1.9を使用しています。格子のバージョンはわかりません。関連する変数(z)のレベルをプロットするために使用されるカラーランプのデフォルトの格子設定を変更する必要があることを除いて、私はそれを完全に機能させました。具体的には、Magenta-Cyanのデフォルトランプの代わりにグレースケールが必要です。ダミーデータフレームを生成し、バニラ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を使用すると、col.Regions引数を設定することはできません。ドキュメントによると、RPY2は任意の変換することになっています。関数引数の文字_。ただし、Col_Regionsを使用すると引数が無視されるため、これは機能していないようです。レベルプロットを生成する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