我正在多个方面绘制geom_points,并希望在每个方面上注释R ^ 2(最好是在facet_label而不是图形上).我在这里找到了一些代码,它会给出R ^ 2和完整数据的回归方程框架而不是子集.
我的data.frame被追加了.
基本上我想关联ln_x和ln_y(由于命名约定不正确,ln_x实际上在y轴上)由roi_size面对.这是我到目前为止:
lm_eqn = function(df){
m = lm(ln_x ~ ln_y, df);
eq <- substitute(~~R^2~"="~r2,
list(r2 = format(summary(m)$r.squared, digits = 3)))
as.character(as.expression(eq));
}
p2 <- ggplot(df, aes(x=ln_x, y=ln_y)) + geom_point(shape=19, aes(colour=factor(depth))) + geom_smooth(method="lm") +
facet_wrap(~roi_size) + scale_color_discrete("depth (mm)")
p2 + labs(y=expression(ln(frac(C[low]^air,C[low]^depth))),
x=expression(ln(frac(C[low]^depth,C[high]^depth))) ) +
theme(axis.title.x = element_text(colour='blue', size=16, hjust=0.9)) +
theme(axis.title.y = element_text(colour='blue', size=16, angle=0)) +
geom_text(aes(x=1.5,y=2.2,label=lm_eqn(df),family="serif"),
color='blue', parse=TRUE)
Run Code Online (Sandbox Code Playgroud)
这将打印每个方面上的完整数据帧的R ^ 2.如何调整为每个方面的数据打印R ^ 2,因为df取决于facet变量(roi_size).另外,我如何在构面标签而不是图形上打印文本
structure(list(roi_size = c(54.11, 49.18, 41.06, 32.31, 23.71,
13.85, …Run Code Online (Sandbox Code Playgroud) 我有一个以下面的方式创建的数据框.
library(ggplot2)
x <- data.frame(letters[1:10],abs(rnorm(10)),abs(rnorm(10)),type="x")
y <- data.frame(letters[1:10],abs(rnorm(10)),abs(rnorm(10)),type="y")
# in reality the number of row could be larger than 10 for each x and y
all <- rbind(x,y)
colnames(all) <- c("name","val1","val2","type")
Run Code Online (Sandbox Code Playgroud)
我想要做的是创建一个看起来大致如下的刻面ggplot:

因此,上面的每个方面都是以下相关图:
# Top left facet
subset(all,type=="x")$val1
subset(all,type=="y")$val1
# Top right facet
subset(all,type=="x")$val1
subset(all,type=="y")$val2
# ...etc..
Run Code Online (Sandbox Code Playgroud)
但我坚持使用以下代码:
p <- ggplot(all, aes(val1, val2))+ geom_smooth(method = "lm") + geom_point() +
facet_grid(type ~ )
# Calculate correlation for each group
cors <- ddply(all, c(type ~ ), summarise, cor = round(cor(val1, val2), 2)) …Run Code Online (Sandbox Code Playgroud)