python - 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()
解决方案
这回答了我的问题:由于缺少尺寸,我将它们堆叠在下面。
- 代码中的原始行:
ax1.plot(peaks, x[peaks], 'x', markersize=8)
- 代码中的正确行:
ax1.plot(w[peaks], x[peaks], 'x', markersize=8)
- 结果:
推荐阅读
- azure - Get-AzureRmLogicAppRunHistory 时间跨度问题
- laravel - 未定义索引:当 JWT 使用手机号码作为凭据进行身份验证时,EloquentUserProvider.php 第 126 行中的密码
- c# - 无法从 HoloLens 连接到本地服务器 (XAMPP)
- c++ - 在 .h 文件中定义模板,与在 .h 文件中声明并在 .cpp 文件中定义
- firebase - Firebase Cloud Functions:无法传递从实时数据库检索到的令牌
- php - 为什么我不能得到 yearly_revenue 的错误值
- wpf - OxyPlot XAML 未知系列计数
- angular - Angular 7:延迟加载 WebWorkers 导致 ng serve 在第一次重新加载时崩溃
- python-3.x - 将matplotlib图表直接导出到Excel?不先保存到文件
- r - 在 R 中列出与大 CSV 的连接