python - 使用 timedelta 在图形上正确对齐峰值
问题描述
我正在使用scipy.signal
库来查找时间图的峰值。我输入了我的熊猫系列的 y 值。它给了我山峰的位置。现在我正在尝试使用find_peaks
函数中的位置来返回峰值的时间位置。这是我的功能:
def turn_peaks_to_time_series(df,t_interval):
df_values = df['l'].values
fig, ax1 = plt.subplots()
x_of_peaks, _ = find_peaks(df_values, height=None)
y_of_peaks = df_values[x_of_peaks]
x_values_to_t_values = lambda x : timedelta(minutes=x) * t_interval
time_initial = np.min(df.index)
t_of_peaks = [ time_initial + x_values_to_t_values(int(i)) for i in x_of_peaks ] #source of issue
ax1.plot(t_of_peaks, y_of_peaks, "rp",label='peak') #plot peaks on graph
ax1.plot(df.index,df.l) # plot df line
plt.show()
我知道问题出在我的x_values_to_t_values
功能上。此外,非常欢迎任何优化我的代码的建议。
解决方案
原来我试图重新发明轮子。我的问题的解决方案非常简单。此外,我将代码调整为更通用。
def turn_peaks_to_time_series(series):
series_values = series.values
series_index = series.index
fig, ax1 = plt.subplots()
x_of_peaks, _ = find_peaks(series_values, height=None)
y_of_peaks = series_values[x_of_peaks]
ax1.plot(series_index[x_of_peaks], y_of_peaks, "rp",label='peak') #plot peaks on graph
ax1.plot(series_index,series_values) # plot df line
plt.show()
推荐阅读
- jstree - Jstree,为文本节点着色
- php - 浏览器未从 PHP 脚本下载文件
- ios - 如何让按钮与另一个按钮重叠并慢慢消失
- winforms - DataGridView 与 DataTable 作为源和 SuggestAppend 组合框列和动态单元格分配
- python - 如何使用 Python 计算消息完整性代码(MIC)?
- asp.net-core - .NET Core SignalR redis 背板
- python - 更改密码后 Azure ChainedTokenCredential 失败
- php - 如何使用 Eloquent 使查询构建器语法变得更简单
- powershell - 在 ffmpeg 循环命令中出现关键字错误后缺少开头的“(”
- sql - 使用 Select 语句更新或插入