首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何调整回归方程在ggplot上的位置?

如何调整回归方程在ggplot上的位置?
EN

Stack Overflow用户
提问于 2021-08-20 22:15:47
回答 1查看 122关注 0票数 0

我想将回归线和R^2添加到我的ggplot中。我正在将回归线拟合到不同的类别,对于每个类别,我都会得到一个唯一的方程。我想手动设置每一类方程的位置。即找到每个组的y的最大表达式,并在ymax + 1处打印方程。

下面是我的代码:

代码语言:javascript
运行
复制
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

有什么建议要怎么做吗?

还有,有没有办法,我只能打印方程的斜率。(从绘图中删除截取)?

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2021-08-20 23:45:50

我非常确定使用geom参数设置调整stat_poly_eq()会得到您想要的结果。这样做将使方程式居中,使每个方程式的左半部分被裁剪,因此我们使用hjust = 0向左调整方程式。最后,根据您的特定数据,这些方程可能会相互重叠,因此我们使用position参数来尝试将它们分开。

我希望这个调整过的电话能让你开始:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68868546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档