将计算值从stat_smooth传输到其他类似几何图形的linerange

将计算值从stat_smooth传输到其他类似几何图形的linerange,r,ggplot2,R,Ggplot2,我有一个关于ggplot2的问题 我想通过垂直线将数据点与ols结果连接起来,如下面列出的代码 我是否可以将由stat\u smooth计算的值.y..直接传输到geom\u linerange 我尝试了统计平滑(…,geom=“linerange”,映射(aes(ymin=pmin(myy,…y…),ymax=pmax(myy,…y…)),但这不是我想要的结果 library(ggplot2) df <- data.frame(myx = 1:10, m

我有一个关于ggplot2的问题

我想通过垂直线将数据点与ols结果连接起来,如下面列出的代码

我是否可以将由
stat\u smooth
计算的值
.y..
直接传输到
geom\u linerange

我尝试了统计平滑(…,geom=“linerange”,映射(aes(ymin=pmin(myy,…y…),ymax=pmax(myy,…y…)),但这不是我想要的结果

library(ggplot2)
df <- data.frame(myx = 1:10,
                 myy = c(1:10) * 5 + 2 * rnorm(10, 0, 1))
lm.fit <- lm("myy~myx", data = df)
pred <- predict(lm.fit)
ggplot(df, aes(myx, myy)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  geom_linerange(mapping = aes(ymin = pmin(myy, pred),
                               ymax = pmax(myy, pred)))
库(ggplot2)

df
stat\u smooth
计算
n
等间距点的值,默认情况下
n=80
。这些点可能与数据帧中的原始x值不一致

由于您仍在计算预测值,因此将其添加回数据帧并基于此绘制所有几何图形图层作为数据源可能更为简单,例如:

df$pred <- pred

ggplot(df, aes(myx, myy)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  geom_linerange(aes(ymin = myy, ymax = pred))

df$pred是否可以通过更改一些默认参数使..y..与原始x一致?我过去认为没有必要再次在stat_smooth之外重新计算拟合值。