rpy2 と格子を使用して、numpy 配列のデータを使用してヒートマップまたは色強度プロットを作成しようとしています。私は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 では、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で?