在python中可视化二进制时间序列数据

时间:2018-06-15 18:12:10

标签: python time-series visualization data-visualization

我有一些不同的二进制时间序列的集合,我想在彼此之上进行可视化。该系列由循环数据组成,因此每个数据点看起来像(start_ts, end_ts, state),其中start_tsend_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)

1 个答案:

答案 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)