我想将回归线和R^2添加到我的ggplot中。我正在将回归线拟合到不同的类别,对于每个类别,我都会得到一个唯一的方程。我想手动设置每一类方程的位置。即找到每个组的y的最大表达式,并在ymax + 1处打印方程。
下面是我的代码:
library(ggpmisc)
df <- data.frame(x = c(1:100))
df$y <- 20 * c(0, 1) + 3 * df$x + rnorm(100, sd = 40)
df$group <- factor(rep(c("A", "B"), 50))
df <- df %>% group_by(group) %>% mutate(ymax = max(y))
my.formula <- y ~ x
df %>%
group_by(group) %>%
do(tidy(lm(y ~ x, data = .)))
p <- ggplot(data = df, aes(x = x, y = y, colour = group)) +
geom_smooth(method = "lm", se=FALSE, formula = my.formula) +
stat_poly_eq(formula = my.formula,
aes(x = x , y = ymax + 1, label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point()
p
有什么建议要怎么做吗?
还有,有没有办法,我只能打印方程的斜率。(从绘图中删除截取)?
谢谢,
发布于 2021-08-20 23:45:50
我非常确定使用geom
参数设置调整stat_poly_eq()
会得到您想要的结果。这样做将使方程式居中,使每个方程式的左半部分被裁剪,因此我们使用hjust = 0
向左调整方程式。最后,根据您的特定数据,这些方程可能会相互重叠,因此我们使用position
参数来尝试将它们分开。
我希望这个调整过的电话能让你开始:
p <- ggplot(data = df, aes(x = x, y = y, colour = group)) +
geom_smooth(method = "lm", se=FALSE, formula = my.formula) +
stat_poly_eq(
formula = my.formula,
geom = "text", # or 'label'
hjust = 0, # left-adjust equations
position = position_dodge(), # in case equations now overlap
aes(x = x , y = ymax + 1, label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point()
p
https://stackoverflow.com/questions/68868546
复制相似问题