【发布时间】:2017-09-15 15:55:58
【问题描述】:
我在将相关系数放在 facet_wrap 之后的散点图上由另一个变量时遇到问题。 下面是我使用 mtcars 数据集制作的示例,用于说明目的。 当我将其绘制出来时,两个图都具有相同的相关数。似乎没有为每个方面计算相关系数。我想不出一种方法来实现这一点。如果有人能提供帮助,真的很感激......
library(ggplot2)
library(dplyr)
corr_eqn <- function(x,y, method='pearson', digits = 2) {
corr_coef <- round(cor.test(x, y, method=method)$estimate, digits = digits)
corr_pval <- tryCatch(format(cor.test(x,y, method=method)$p.value,
scientific=TRUE),
error=function(e) NA)
paste(method, 'r = ', corr_coef, ',', 'pval =', corr_pval)
}
sca.plot <- function (cor.coef=TRUE) {
df<- mtcars %>% filter(vs==1)
p<- df %>%
ggplot(aes(x=hp, y=mpg))+
geom_point()+
geom_smooth()+
facet_wrap(~cyl, ncol=3)
if (cor.coef) {
p<- p+geom_text(x=0.9*max(df$hp, na.rm=TRUE),
y=0.9*max(df$mpg, na.rm=TRUE),
label = corr_eqn(df[['hp']],df[['mpg']],
method='pearson'))
}
return (p)
}
sca.plot(cor.coef=TRUE)
【问题讨论】:
-
我不会那样做...每个函数一个函数。使用
ggplot2绘制数据,使用cor计算相关性,不要混合这些东西。使用基础 R 计算每个cyl的相关性并将其传递给geom_text。 -
@PoGibas 我只是以 mtcars 为例。在我的工作中,我需要为闪亮的应用程序可视化目的这样做。选择 facet_wrap 变量并绘制带有相关系数的散点图。