画一个圆以突出显示R中曲线的最大值

时间:2019-05-09 18:30:58

标签: r plot graph

我试图画一个小圆圈以突出显示使用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

在此先感谢大家的帮助。

洛伦佐

2 个答案:

答案 0 :(得分:5)

我们可以使用points

示例:

curve(x^2)
points(x=.5, y=.25, cex=2, col="red")

enter image description here

或者,更复杂...

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

答案 1 :(得分:1)

另一个查找比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