首页 > 解决方案 > find_peaks() 把峰放在了正确的地方,但是把图挤到了左边

问题描述

我想通过 scipy 库和它的函数 find_peaks() 检测曲线中的峰值。
如果我在脚本中绘制没有 find_peaks() 函数的曲线,它会按预期绘制。
但是,如果我在脚本中使用 find_peaks() 函数,则绘图会显示这种意外行为。
任何想法这里出了什么问题都值得赞赏。
多谢。

如果我在没有 find_peaks() 函数的情况下绘制曲线,它将按预期绘制:

正常情节

但是,如果我使用 find_peaks() 函数,该图会显示这种意外行为:

压缩情节

我使用了这个源代码,因为显示了压缩图:

import pandas as pd
import numpy as np
from scipy.signal import find_peaks


"""Read the file

"""
path = '../data/accelerometer/Wrist-Accelerometer-X-Axis-UpDown.csv'


"""Define the variables

"""
w = data['elapsed (s)']
x = data['x-axis (g)']


"""Plot the data

"""
fig, ax1 = plt.subplots(nrows=1, ncols=1, figsize=(8, 4))


ax1.plot(w, x, marker='.')
ax1.set_title('UpDown movement: Behaviour of x-axis')
ax1.set_xlabel('$Datapoints$')
ax1.xaxis.set_major_locator(plt.MultipleLocator(0.5))
ax1.set_ylabel('$Acceleration \n on x-axis (g)$')
ax1.yaxis.set_major_locator(plt.AutoLocator())
peaks, _ = find_peaks(x, -2, 0, prominence=1, distance=1)
ax1.plot(peaks, x[peaks], 'x', markersize=8)

plt.show()

标签: pythonscipy

解决方案


这回答了我的问题:由于缺少尺寸,我将它们堆叠在下面。

  • 代码中的原始行:
ax1.plot(peaks, x[peaks], 'x', markersize=8)
  • 代码中的正确行:
ax1.plot(w[peaks], x[peaks], 'x', markersize=8)
  • 结果:

预期 = 给定


推荐阅读