我正在使用 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"]()
但是假设我实际上可以从 Python 访问 R 数据框,我该如何绘制这些相关性呢?谢谢。