我已经绘制了一个大约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/

10-13 22:08