ggplot2中facet grid的相关系数值

6

在使用ggplot2的facet_grid时,我希望能够在特定图表的右上角为每个网格单元的子集数据显示相关性的值。

例如,如果运行以下命令:

p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
p + facet_grid(vs ~ am, margins=TRUE)

我希望能在9个图案中的每一个都看到相关性的值。在这个特定的例子中,我期望每个图案的相关性都接近于-0.9左右,从视觉检查来看。
或者在与facet_grid相匹配的表格中,提供输出表格以给出每个单元格的相关值(这是较不理想但也可选的)。
理想情况下,我希望将其扩展到我选择的任何其他函数,以便它可以使用绘制的两个变量之一或两者都用来计算统计数据。
这可能吗?
提前感谢您。
2个回答

7
温斯顿·张在ggplot2小组提出了一个答案,这是他的话...这不是一个坏答案...
你可以这样做:
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()

# Calculate correlation for each group
cors <- ddply(mtcars, c("vs", "am"), summarise, cor = round(cor(mpg, wt), 2))

p + facet_grid(vs ~ am) +
geom_text(data=cors, aes(label=paste("r=", cor, sep="")), x=30, y=4)

我不认为使用margins=TRUE可以正确地呈现这个结果。如果你想要边距,你可能需要预处理你的数据,在每个分面变量中添加一个ALL值。
-Winston

6

我更倾向于给数据添加一个(线性)平滑器。它比相关性提供了更多的信息。

ggplot(mtcars, aes(mpg, wt)) + 
    geom_smooth(method = "loess", colour = "red", fill = "red") + 
    geom_smooth(method = "lm", colour = "blue", fill = "blue") + 
    geom_point() + facet_grid(vs ~ am, margins=TRUE)

enter image description here

ggplot(mtcars, aes(mpg, wt)) + geom_smooth(method = "lm") + geom_point() + 
    facet_grid(vs ~ am, margins=TRUE)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接