在R中绘制一个圆来突出显示曲线的最大值

3

我正在尝试使用curve()方法绘制一个小圆圈,以突出显示函数的最大值。我已经知道该点的坐标,因此无需使用R计算它们。

这是我编写的绘制曲线的代码:

curve(expr=exp(-((sum(s1, s2, s3, s4, s10, s599)-x*1599)^2)/
                 (2*1599*x))/sqrt(2*pi*1599*x), xlim=c(0.5, 1.5), 
      xlab=expression("rate"~~"[ "*s^-1*" ]"), ylab="")

我也附上了一对图片,显示我所拥有的和我想要做的东西。
我能画出以下曲线: enter image description here 带有小圆圈的曲线: enter image description here 提前感谢你们所提供的任何帮助。
Lorenzo
2个回答

5
我们可以使用points示例:
curve(x^2)
points(x=.5, y=.25, cex=2, col="red")

在这里输入图片描述

或者,更复杂一些...

v <- curve(-x^2, xlim=c(-1, 1))
points(max(v$y), v$x[which.max(v$y)], cex=2, col=2)

enter image description here


2

寻找最大值的位置比which.max更精确的另一个选项是使用optimize


y = function(x,s=2000) exp(-((s-x*1599)^2)/(2*1599*x))/sqrt(2*pi*1599*x)
xlim = c(0.5, 1.5)

curve(y, xlim=xlim)

maximum = optimize(y, xlim, maximum = TRUE)
points(maximum$maximum, maximum$objective, col='red')

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接