如何统计pyplot图表峰值数量并根据峰值存在执行不同操作
根据峰值存在与否执行不同操作的实现方案
原实现代码
BytesReceived = df.iloc[:,0].values print(type(BytesReceived)) #1d array print(currentThreshold) peaks = find_peaks(BytesReceived, height = currentThreshold)[0] plt.plot(BytesReceived) plt.plot(peaks, BytesReceived[peaks],"X") plt.show()
需求说明
我使用find_peaks函数(上述代码)查找图表中的峰值。但在图表中展示峰值后,希望根据峰值是否存在输出不同结果——有峰值时执行某操作,无峰值时执行另一操作。初步打算通过统计峰值数量设置判断条件,寻求相关帮助。
解决方案
find_peaks返回的第一个元素peaks是存储所有峰值索引的numpy数组,直接通过数组长度就能判断峰值是否存在,进而分支执行不同操作:
# 接原代码的绘图部分之后 if len(peaks) > 0: print(f"检测到{len(peaks)}个峰值,执行目标操作") # 在这里编写有峰值时的业务逻辑,比如数据导出、触发告警等 else: print("未检测到峰值,执行对应操作") # 在这里编写无峰值时的业务逻辑,比如记录日志、触发默认流程等
逻辑说明
len(peaks)会直接返回峰值的数量,当数值大于0时说明存在至少一个峰值;- 等于0则说明没有符合阈值条件的峰值,逻辑清晰且易于维护。
内容的提问来源于stack exchange,提问作者auriX007
相关产品推荐
相关产品推荐

