我正致力于动态时间扭曲的时间序列。我需要绘制两个序列的数据点之间的对齐:
t=[t1,t2,t3,...,tx]
s=[s1,s2,s3,...,sy]
两个序列的长度可能不同。我也有哪些点匹配,说:
[(1,1),(1,2), (2,2), (3,3), (4,3), (4,4)]
读作:
t[1] matches s[1]
t[1] matches s[2]
t[2] matches s[2]
...
t[4] matches s[4]
我想要实现的是这样的:
我知道dtw
pacakge的存在虽然它似乎没有包含绘制路线的方法。我使用Python进行绘图是相当新的,所以当谈到matplotlib和numpy时,我仍然处于黑暗中,或者至少我不确定使用它们的最佳方法。
总结一下,我只需要知道如何绘制两个序列,一个在另一个上面(子图可能会有所帮助,我相信?)并使用Python在每个数据点之间画一条线。
答案 0 :(得分:4)
你应该能够用plt.plot绘制s和t。在它们之间做界线有点棘手。我假设x轴对应于s和t的第x个元素。在这种情况下,如果s的第i个元素和t的第j个元素配对,您可以使用plt.plot((i, j), (s[i], t[j]), color = 'black')
import matplotlib.pyplot as plt
#plot signals
plt.plot(y1, label = 'Signal 1')
plt.plot(y2, label = 'Signal 2')
#plot alignment
for i, j in matches:
plt.plot((i, j), (y1[i], y2[j]), color = 'black')
plt.show()