如何从图中找到R中的局部最大值
How to find local maximum in R from graph
我的编码有问题。我应该
绘制方程 [y=f(x)] 的图形,其中 f(x) = (10*((x-1)^2)^(1/3))/ (x^2 + 9) 对于 x 的 10001 个值在(包括)-5 和 5
之间
在a的10001个x值中,求出f(x)的两个局部最大值。
我试过这样做:
# question1
x <- seq(-5,5,length=10001)
y <- (10*((x-1)^2)^(1/3))/(x^2 + 9)
plot(x,y) # This will produce a graph with two max point
# question2
x[which.max(y)]
y[which.max(y)]
但是,我只得到了一个最大点的坐标,不知道如何得到另一个最大点。
您可以使用包 ggpmisc
中的 find_peaks
。
library(ggpmisc)
x[ggpmisc:::find_peaks(df$y)]
y[ggpmisc:::find_peaks(df$y)]
输出为:
[1] -1.5 3.0
[1] 1.6373473 0.8818895
请注意,函数 find_peaks
被标记为 internal。因此,您需要使用 :::
.
访问它
您可以使用 span
和 strict
参数进一步参数化对 find_peaks
的调用。有关详细信息,请参阅 ??find_peaks
。
您也可以使用 ggplot2
和 ggpmisc
包直接绘制此图:
x <- seq(-5,5,length=10001)
y <- (10*((x-1)^2)^(1/3))/(x^2 + 9)
df <- data.frame(x = x, y = y)
ggplot(data = df, aes(x = x, y = y)) + geom_line() + stat_peaks(col = "red")
我的编码有问题。我应该
绘制方程 [y=f(x)] 的图形,其中 f(x) = (10*((x-1)^2)^(1/3))/ (x^2 + 9) 对于 x 的 10001 个值在(包括)-5 和 5
之间
在a的10001个x值中,求出f(x)的两个局部最大值。
我试过这样做:
# question1
x <- seq(-5,5,length=10001)
y <- (10*((x-1)^2)^(1/3))/(x^2 + 9)
plot(x,y) # This will produce a graph with two max point
# question2
x[which.max(y)]
y[which.max(y)]
但是,我只得到了一个最大点的坐标,不知道如何得到另一个最大点。
您可以使用包 ggpmisc
中的 find_peaks
。
library(ggpmisc)
x[ggpmisc:::find_peaks(df$y)]
y[ggpmisc:::find_peaks(df$y)]
输出为:
[1] -1.5 3.0
[1] 1.6373473 0.8818895
请注意,函数 find_peaks
被标记为 internal。因此,您需要使用 :::
.
您可以使用 span
和 strict
参数进一步参数化对 find_peaks
的调用。有关详细信息,请参阅 ??find_peaks
。
您也可以使用 ggplot2
和 ggpmisc
包直接绘制此图:
x <- seq(-5,5,length=10001)
y <- (10*((x-1)^2)^(1/3))/(x^2 + 9)
df <- data.frame(x = x, y = y)
ggplot(data = df, aes(x = x, y = y)) + geom_line() + stat_peaks(col = "red")