首页 > 解决方案 > peak_widths wrt 到 x 轴

问题描述

我正在使用 scipy.signal 来计算不同峰的宽度。我有 100 个不同时间点的值。我正在使用以下代码来计算峰值,然后是宽度。问题是在计算宽度时没有考虑 x 轴上的时间。

peaks_control, _ = find_peaks(x_control, height=2100)
time_control     = time[:100]
width_control    = peak_widths(x_control, peaks_control, rel_height=0.9)

width_control 的输出是

array([12.84785714, 13.21299534, 13.4502381 , 12.71311143]),
array([2042.5, 2048.8, 2057.4, 2065. ]),
array([ 5.795 ,28.29469697, 51.245 , 74.17150396]),
array([18.64285714, 41.50769231, 64.6952381 , 86.88461538 ]))

我正在使用以下方法在 x 轴上使用时间并显示信号,这是正确的

plt.plot(time_control, x_control)
plt.plot(time_control[peaks_control], x_control[peaks_control], "x")
#plt.plot(np.zeros_like(x_control), "--", color="gray")
#plt.xlim(time_control.tolist())
plt.title('Control')
plt.xlabel('Time (s)')
plt.ylabel('RFU')
plt.show()

在此处输入图像描述

我正在使用以下代码来显示宽度,但无法将实际时间放在 x 轴上。

plt.plot(x_control)
plt.plot(peaks_control, x_control[peaks_control], "x")
plt.hlines(*width_control[1:], color="C3")

plt.title('Control')
plt.xlabel('Time (s)')
plt.ylabel('RFU')
plt.show()

在此处输入图像描述

标签: pythonscipy

解决方案


推荐阅读