gpt4 book ai didi

python - 使用 rpy2 设置点阵图选项时出现问题

转载 作者:太空宇宙 更新时间:2023-11-03 15:27:30 24 4
gpt4 key购买 nike

我正在尝试使用 rpy2 和 lattice 使用 numpy 数组中的数据创建热图或颜色强度图。我正在使用 python 2.6.2、R 2.10.1、rpy2 2.1.9,不确定是哪个版本的 lattice。我已经让它工作得很好,除了我需要修改用于绘制相关变量 (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 中?

最佳答案

您需要手动指定参数映射:

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

It is important to understand that the translation is done by inspecting the signature of the R function, and that not much can be guessed from the R ellipsis ‘...’ whenever present.

关于python - 使用 rpy2 设置点阵图选项时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4748872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com