Python查找错误的x轴

2024-03-28 19:29:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了以下代码:

Frequency = df['x [Hz]']
Spectrum = df['test_spec']

x = Spectrum
peaks, _ = find_peaks(x, distance=20)
plt.plot(peaks, x[peaks], "xr"); plt.plot(x); plt.legend(['distance'])
plt.show()

可变“频率”包含5-315 HZ的第三波段倍频程频谱的频率。“频谱”包含相关的噪声压力级别。现在我想找到光谱中的峰值。我需要的值是峰值所在的频率

问题是,绘图显示的是一个x轴,其步长为0,5,10,15,但我想要一个x轴刻度,其频率保存在变量“Frequency”中

希望你能帮助我

谢谢你的支持


Tags: 代码testdfplotpltfind频谱spectrum
1条回答
网友
1楼 · 发布于 2024-03-28 19:29:44

find_peaks()的文档可能有点混乱,因为它调用其输入x,而在大多数情况下,输入将绘制在y轴上find_peaks()不关心x轴,假设它与数组索引(0,1,2,...)相同

要绘制曲线,需要在x轴上使用Frequency绘制,在y轴上使用Spectrum绘制。您可以通过将峰值用作两个阵列中的索引来可视化峰值:

import matplotlib.pyplot as plt
from scipy.signal import find_peaks
import numpy as np

Frequency = np.linspace(5, 315, 200)
Spectrum = np.random.randn(200).cumsum()
Spectrum += 1 - Spectrum.min()

peaks, _ = find_peaks(Spectrum, distance=20)
plt.plot(Frequency[peaks], Spectrum[peaks], "xr")
plt.plot(Frequency, Spectrum)
plt.legend(['distance'])
plt.tight_layout()
plt.show()

example plot

相关问题 更多 >