Я использую Rpy2 для построения кадров данных с помощью ggplot2. Делаю следующий сюжет:
p = ggplot2.ggplot(iris) + \
ggplot2.geom_point(ggplot2.aes_string(x="Sepal.Length", y="Sepal.Width")) + \
ggplot2.facet_wrap(Formula("~Species"))
p.plot()
r["dev.off"]()
Я хотел бы аннотировать каждый сюжет с некоторыми статистическими данными о сюжете. Например, я хотел бы вычислить корреляцию между каждым подграфиком x/y и поместить его в правый верхний угол графика. Как это может быть сделано? В идеале я хотел бы преобразовать кадр данных из R в объект Python, вычислить корреляции, а затем спроецировать их на разброс. Следующее преобразование не работает, но я пытаюсь это сделать так:
# This does not work
#iris_df = pandas.DataFrame({"Sepal.Length": rpy2.robjects.default_ri2py(iris.rx("Sepal.Length")),
# "Sepal.Width": rpy2.robjects.default_ri2py(iris.rx("Sepal.Width")),
# "Species": rpy2.robjects.default_ri2py(iris.rx("Species"))})
# So we access iris using R to compute the correlation
x = iris_py.rx("Sepal.Length")
y = iris_py.rx("Sepal.Width")
# compute r.cor(x, y) and divide up by Species
# Assume we get a vector of length Species saying what the
# correlation is for each Species' Petal Length/Width
p = ggplot2.ggplot(iris) + \
ggplot2.geom_point(ggplot2.aes_string(x="Sepal.Length", y="Sepal.Width")) + \
ggplot2.facet_wrap(Formula("~Species")) + \
# ...
# How to project correlation?
p.plot()
r["dev.off"]()
Но предполагая, что я действительно могу получить доступ к фрейму данных R из Python, как я могу построить эти корреляции? Благодарю.