You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拓宽短极值数组,实现matplotlib绘图时与主曲线对齐匹配

对齐极值曲线与主曲线的解决方案

你当前的错误根源是使用np.linspace将短极值数组的元素均匀分布在整个横轴区间,忽略了峰值、谷值本身在主曲线中分布不均匀的特性,不需要做复杂的数组拓宽插值,按以下两种方法操作即可:

方法1:直接使用极值对应帧序号绘图(推荐)

你在检测峰值、谷值时,不能只存储数值,需要同时存储它们在主曲线数组中对应的下标(也就是帧序号),绘图时直接用该下标作为x轴参数即可完美对齐:

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

# fun为你的长度180的主曲线数组
# 提取峰值的对应下标和数值
peak_indices, _ = find_peaks(fun)
max_peaks_vals = fun[peak_indices]

# 提取谷值的对应下标和数值
valley_indices, _ = find_peaks(-fun)
min_norm = fun[valley_indices]

# 绘图
plt.figure(figsize=(15, 5))
plt.plot(valley_indices, min_norm, 'b', label='谷值')
plt.plot(peak_indices, max_peaks_vals, 'g', label='峰值')
plt.plot(fun, 'm', label='主曲线')
plt.legend()
plt.show()

方法2:生成和主曲线等长的拓宽数组

如果你确实需要得到和主曲线长度一致的短数组,可初始化和主曲线等长的全NaN数组,将极值填入对应下标位置即可,绘图时会自动跳过NaN值:

# 生成等长峰值数组
peak_full = np.full_like(fun, np.nan)
peak_full[peak_indices] = max_peaks_vals

# 生成等长谷值数组
valley_full = np.full_like(fun, np.nan)
valley_full[valley_indices] = min_norm

# 直接绘图自动对齐
plt.figure(figsize=(15, 5))
plt.plot(valley_full, 'b', label='谷值')
plt.plot(peak_full, 'g', label='峰值')
plt.plot(fun, 'm', label='主曲线')
plt.legend()
plt.show()

原问题参考图:
示例图
原错误效果图:
效果图

内容的提问来源于stack exchange,提问作者Dawid_K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 07:45:09