我有一些不同的二进制时间序列的集合,我想在彼此之上进行可视化。该系列由循环数据组成,因此每个数据点看起来像(start_ts, end_ts, state)
,其中start_ts
和end_ts
都是浮点数,state
是布尔值
每个时间序列都由一个像上面那样的元组列表组成,产生类似
的元素[(t0, t1, s1),
(t1, t2, s2),
...
(tn-1, tn, sn)]
例如,您可能有类似
的内容[(0, 5, TRUE),
(5, 23, FALSE),
(23, 38, TRUE)]
表示对于该特定时间序列,值从0秒到5秒为TRUE,从5秒到23秒为FALSE,然后从23秒到38秒再次为TRUE
最后,我想要输出看起来像
series_1 XXXXXOOOOOXXXXXOOXOOOXO
series_2 XXXXXXXXOOOOOOXXXXXXOOO
series_3 XXXXOOOOXXXXXXXXXXOOOXX
但是作为彩色图表,而不是一系列X和O的
您对可视化的最佳方法有什么建议吗?谢谢!
更新 我已经开始使用下面的代码研究anishtain4的解决方案了。我发现我需要连接并展平列表
import numpy as np
import matplotlib.pyplot as plt
def convert_to_np_list(cycles):
series_i_shape=[np.ones(int(b[1]-b[0]))*b[2] for b in cycles]
flattened_shape = np.concatenate(series_i_shape).ravel()
return flattened_shape
truth_list = convert_to_np_list(truth_cycles)
pred_list = convert_to_np_list(pred_cycles)
print truth_list.shape
print pred_list.shape
timeshape=np.c_[truth_list, pred_list]
plt.pcolor(timeshape.T)
答案 0 :(得分:1)
由于我不确定你有多少时间序列以及如何存储它们,所以首先我将解释如何为每个时间序列执行此操作。这会将每个系列转换为一组0和1。
series_i_shape=[np.ones(b[1]-b[0])*b[2] for b in series_i]
然后将它们叠加在列中:
timeshape=np.c_[series_1_shape,series_2_shape,...]
然后您可以使用matplotlib.pyplot as plt
:
plt.pcolor(timeshape.T)