【发布时间】:2019-10-16 05:38:05
【问题描述】:
我有一个包含主要数据点(蓝线)和最大值(绿色)和最小值(红色)的图表。
请注意,最小值和最大值的 x 值不相同,也不保证它们具有相同的值计数。
现在我的目标是确定最大值线和最小值线之间沿 y 轴的距离(积分?抱歉,自从 uni 中的微积分以来已经有一段时间了)从沿 y 轴的平均距离。
这里是用来生成的代码:
# Finding the min and max
c_max_index = argrelextrema(df.flow.values, np.greater, order=3)
c_min_index = argrelextrema(df.flow.values, np.less, order=3)
df['min_extreme'] = df.flow[c_min_index[0]]
df['max_extreme'] = df.flow[c_max_index[0]]
# Plotting the values for the graph above
plt.plot(df.flow.values)
upper_bound = plt.plot(c_max_index[0], df.flow.values[c_max_index[0]], linewidth=0.8, c='g')
lower_bound = plt.plot(c_min_index[0], df.flow.values[c_min_index[0]], linewidth=0.8, c='r')
如果有什么不同,我使用的是 Pandas Dataframe、scipy 和 matplotlib。
【问题讨论】:
-
你能补充一些数据吗?
-
你能定义“沿y轴的平均距离”吗? min_extreme (max_extreme) 的最左边(最右边)部分在 max_extreme (min_extreme) 上没有交易对手呢?你只是想忽略吗?
-
@YiBao 是的,这些可以忽略,因为数据集实际上要大得多,并且会被均匀修剪。平均距离可以定义为:(到绿线-红线的距离)对于蓝线上的每个x值/蓝线上的总点数
标签: python pandas numpy matplotlib