[英]How to stagger the equation of line + Rsquared for multiple factors on a R ggplot?
我有四个因素,每个因素都有其独特的回归线和 Rsquared。 我想做三件事:
将 Rsq 与线的方程对齐(当前位于底部)
将四个方程排列在单独的行上
将四个方程排列在右上方。
set.seed(111) var <- rep(c("SP1","SP2","AB1","AB2"), times = 5) var.val <- rnorm(20,5,1) level <- rep(c(100,200,300,400), each = 5) df <- data.frame(var, var.val, level) df <- df[order(-level),] ggplot(df, aes(x = level, y = var.val, col = var, group = var, linetype = var)) + geom_point(aes(fill = var), colour="white",pch=21, size=4, stroke = 1, alpha = 0.7, data = df[df$var %in% c("SP1", "SP2"),]) + theme_classic() + geom_smooth(data = df[df$var %in% c("SP1", "SP2"),], method = "lm", formula = y ~ x, alpha = 0.2) + geom_smooth(data = df[!df$var %in% c("SP1", "SP2"),], method = "lm", formula = y ~ x, se = FALSE) + scale_linetype_manual(values = c("dotdash", "dashed","solid", "solid")) + scale_colour_manual(values = c("black","black","red","blue")) + stat_poly_eq(formula = y ~ x, aes(label = paste("atop(", ..eq.label.., ",", ..rr.label.., ")")), label.y = 0.9, parse = TRUE, size = 3)
atop()
函数在两个方程之间创建一个换行符。 您可以改用list()
。
对于右上对齐,您可以按以下顺序以小数形式给出值。 每个方程需要不同的值,因此没有重叠。
ggplot(df, aes(x = level, y = var.val, col = var, group = var, linetype = var)) +
geom_point(aes(fill = var), colour="white",pch=21, size=4, stroke = 1,
alpha = 0.7, data = df[df$var %in% c("SP1", "SP2"),]) +
theme_classic() +
geom_smooth(data = df[df$var %in% c("SP1", "SP2"),],
method = "lm", formula = y ~ x, alpha = 0.2) +
geom_smooth(data = df[!df$var %in% c("SP1", "SP2"),],
method = "lm", formula = y ~ x, se = FALSE) +
scale_linetype_manual(values = c("dotdash", "dashed","solid", "solid")) +
scale_colour_manual(values = c("black","black","red","blue")) +
stat_poly_eq(formula = y ~ x, aes(label = paste("list(", ..eq.label.., ",", ..rr.label.., ")")),
label.x = 0.9,
label.y = seq(0.85, 1, by =0.05), parse = TRUE, size = 3)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.