我有这样一个data.frame:
df <- data.frame(a = runif(1000), b = runif(1000), c = runif(1000), d = sample(c("yes", "no"), 1000, replace=TRUE))
Run Code Online (Sandbox Code Playgroud)
我进行了逻辑回归:
lm <- glm(data = df, factor(d) ~ a + b + c, family = binomial)
Run Code Online (Sandbox Code Playgroud)
产生了预测的概率:
df$pred <- predict(lm, type = "response")
Run Code Online (Sandbox Code Playgroud)
并希望图表既具有抖动积为结果a和b,颜色为填充d和光滑的线(使用geom_smooth),用于简单地作用a于d
我已经试过了:
ggplot(data = df , aes(x=a, y = b, color = factor(d))) + geom_jitter() +
geom_smooth(data = df, aes(x=a, y = pred))
Run Code Online (Sandbox Code Playgroud)
但这并没有产生我想要的。我想要的是这条线:
ggplot(data = df , aes(x=a, y = pred)) + geom_smooth()
Run Code Online (Sandbox Code Playgroud)
覆盖在此:
ggplot(data = df , aes(x=a, y = b, color = factor(d))) + geom_jitter()
Run Code Online (Sandbox Code Playgroud)
任何和所有帮助将不胜感激。
这确实有效,现在它不再按因素进行分组:
ggplot(data = df ) +
geom_point(aes(x=a, y = b, color = factor(d))) +
geom_smooth(aes(x=a, y = pred))
Run Code Online (Sandbox Code Playgroud)
现在,您可以在指定数据的位置创建一个 ggplot。在其顶部添加一个包含点(a 和 b)的图层,并在其顶部添加几何平滑线。
但请确保您还查看了两个图的 y 轴。在 geom_smooth() 图中,您可以看到漂亮的 s 形曲线。然而,Y 轴范围是从 0.51 到 0.47。

然后,如果我们查看限制为 0 和 1 的总图。您的线看起来几乎是直的,这只是因为限制。