Python在绘图中找到x值到相应的max y值

kla*_*iel 6 python average max

我已经绘制了大约300,000个数据点的移动平均值,我需要找到信号中峰值的最大y值及其相应的x值,即其频率.我想它给我一些情节本身的坐标,但如果我能得到它至少打印出来我会满意的.请原谅我的编程技巧,因为他们不是最强的.这是我正在处理的代码部分以及它生成的绘图的链接.我没有足够的积分来发布图片.

def movingaverage(interval, window_size):
    window= np.ones(int(window_size))/float(window_size)
    return np.convolve(interval, window, 'same')

x = freq[0:300000]
y = fft
pylab.plot(x,y,"k.")
y_av = movingaverage(y, 30)
pylab.plot(x, y_av,"r")
pylab.xlim(0,10)
pylab.ylim(0,1500)
pylab.xlabel("Frequency")
pylab.ylabel("Moving Average Magnitude")
pylab.grid(True)
pylab.show() 
Run Code Online (Sandbox Code Playgroud)

移动平均线图

Sam*_*ann 8

你应该可以这样做:

max_y = max(y_av)  # Find the maximum y value
max_x = x[y_av.index(max_y)]  # Find the x value corresponding to the maximum y value
print max_x, max_y
Run Code Online (Sandbox Code Playgroud)

编辑

numpy数组没有索引方法,所以我们应该使用argmax,如注释中所指出的:

max_y = max(y_av)  # Find the maximum y value
max_x = x[y_av.argmax()]  # Find the x value corresponding to the maximum y value
print max_x, max_y
Run Code Online (Sandbox Code Playgroud)

我认为这个API应该可以让你在你的图像上绘制文字.你可以这样做:

pylab.text(max_x, max_y, str((max_x, max_y)))
Run Code Online (Sandbox Code Playgroud)