我已经绘制了一个大约300000个数据点的移动平均值,我需要找到信号中峰值的最大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()
Moving Average Plot
最佳答案
您应该能够执行以下操作:
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
编辑
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
我认为this API应该能让你在图像上绘制文本。你可以这样做:
pylab.text(max_x, max_y, str((max_x, max_y)))
关于python - Python在绘图中找到x值到相应的max y值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11871241/