对于用下面的代码生成的图,我想得到一个通过pandas逻辑生成的信号。
当曲线比最后一个局部最小值高(或多)+3点时,输出信号应从-4变为-2。当曲线比最后一个局部最大值低(或少)2点时,输出信号应从-2变为-4。
图1显示了由下面的代码生成的曲线。图2大致显示了输出信号的样子。
图1:x1c 0d1x
图2:
代码:
import matplotlib
matplotlib.use('QT5Agg')
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(5)
b = np.arange(5, -4, -1)
c = np.arange(-4, 7, .5)
d = np.arange(7, 2, -1)
e = np.arange(2, 6, .2)
f = np.arange(6, -3, -1)
g = np.arange(-3, 2, .25)
r1 = np.append(a, b)
r2 = np.append(r1, c)
r3 = np.append(r2, d)
r4 = np.append(r3, e)
r5 = np.append(r4, f)
r6 = np.append(r5, g)
plt.rcParams['font.size'] = 6
fig, ax1 = plt.subplots()
ax1.plot(r6,'g-o',markersize=3)
plt.annotate('start upward', xy=(0,0), textcoords='data',)
plt.annotate('end upward', xy=(3,3), textcoords='data',)
plt.annotate('start downward', xy=(5,5), textcoords='data',)
plt.annotate('end downward', xy=(7,3), textcoords='data',)
plt.annotate('start upward', xy=(14,-4), textcoords='data',)
plt.annotate('end upward', xy=(20,-1), textcoords='data',)
plt.annotate('start downward', xy=(36,7), textcoords='data',)
plt.annotate('end downward', xy=(38,5), textcoords='data',)
plt.annotate('start upward', xy=(41,2), textcoords='data',)
plt.annotate('end upward', xy=(56,5), textcoords='data',)
plt.annotate('start downward', xy=(61,6), textcoords='data',)
plt.annotate('end downward', xy=(63,4), textcoords='data',)
plt.annotate('start upward', xy=(70,-3), textcoords='data',)
plt.annotate('end upward', xy=(82,0), textcoords='data',)
ax1.minorticks_on()
ax1.grid(b=True, which='major', color='g', linestyle='-')
ax1.grid(b=True, which='minor', color='y', linestyle='--')
plt.show()
字符串
2条答案
按热度按时间wvt8vs2t1#
我觉得你想要这个:
字符串
输出量:
的数据
zsohkypk2#
IIUC:
字符串
的数据