如何使用Python绘制所有峰值

时间:2017-06-12 15:01:37

标签: python python-3.x pandas matplotlib plotly

我正在使用peakutils Python包来检测我的数据中的峰值(estimated.csv的第二列 - 找到here(点击链接)。

以下是我找到峰值的代码:

#/usr/bin/python -tt

import pandas as pd
import peakutils

estimated_data = pd.read_csv("estimated.csv", header=None)
col2 = estimated_data[:][1] # Second column data
print(col2[:]) # Print all the rows
index = peakutils.indexes(col2, thres=0.4, min_dist=1000)
print(index) 

峰值检测效果非常好。我想在下面的教程中绘制所有检测到的峰值。

https://plot.ly/python/peak-finding/

但似乎plotly似乎无法离线工作。是否有使用Pythonmatplotlib包的不同方法?

1 个答案:

答案 0 :(得分:3)

使用matplotlib绘制峰可以通过使用带标记的图来完成。数据由peakutils函数中的索引索引。

import pandas as pd
import peakutils
import matplotlib.pyplot as plt

estimated_data = pd.read_csv("data/estimated.csv", header=None)
col1 = estimated_data[:][0] # First column data
col2 = estimated_data[:][1] # Second column data

index = peakutils.indexes(col2, thres=0.4, min_dist=1000)

plt.plot(col1,col2, lw=0.4, alpha=0.4 )
plt.plot(col1[index],col2[index], marker="o", ls="", ms=3 )

plt.show()

enter image description here

为了将峰值与一条线连接起来(如评论中所要求的那样),只需忽略ls=""

plt.plot(col1[index],col2[index], marker="o", ms=3 )

enter image description here