在ggplot2中添加一条手动设计的非线性线?

Add a manually designed non-linear line in ggplot2?

我想在 R 中的图形中添加非线性模型线,但不是让 ggplot 找到最合适的,我只想预设它的参数,从而能够看到如何多个手动设计的模型适合数据。我尝试了以下方法:

ggplot(cars, aes(x = speed, y = dist)) + 
geom_point() + 
geom_smooth(method = "nls", method.args = list(formula = y ~ 0.76*exp(x*0.5), color = blue, data = data)

但是出现错误:

Computation failed in 'stat_smooth()': formal argument "data" matched by multiple actual arguments

稍作调整后,我还收到错误“what”必须是函数或字符串。有谁知道是否可以手动指定这样的行?我找不到任何其他 Stack Overflow post 关于这个特定主题。

您可能正在寻找 geom_function():

gg0 <- ggplot(cars, aes(x = speed, y = dist)) +  geom_point()
gg0 + geom_function(fun = function(x) 0.76*exp(x*0.5), colour = "blue") +
     coord_cartesian(ylim=c(0,100))

我添加了 coord_cartesian,因为指定的函数在该图的 x 范围的上端获得了非常大的值 ...