用各种颜色绘制事件数组

时间:2019-05-04 12:49:03

标签: python numpy matplotlib plot time-series

我是matplotlib的新手,我想绘制一个数组供时间序列使用,但我不使用日期,只使用索引进行排序。我还有另一个数组,上面的数组中的每个条目都有一个颜色代码。

我正试图将它们绘制成类似于this的形式,但只能绘制成一行。

我的数据如下:

array = ['event0', 'event1', 'event2', 'event0', 'event6', ..]
colours = ['r', 'g', 'b', 'r', 'y', ..]

2 个答案:

答案 0 :(得分:0)

您可以使用plt.scatter(x, y, c=colours)

答案 1 :(得分:0)

import matplotlib.pyplot as plt

# input data
array = ['event0', 'event1', 'event2', 'event0', 'event6']
colours = ['r', 'g', 'b', 'r', 'y']

# for easier plotting, convert your data into numerical data:

方法1:

相同类型的事件获得相同的y坐标

array_numbers = [float(a.split('event')[1]) for a in array]

方法2:

所有事件都具有相同的y坐标:

array_numbers = [1 for a in array]

绘图:

# create figure, and subplots
fig = plt.figure()
ax = plt.subplot(111)

# plot newly generated numbers against their index, using the colours specified
ax.scatter(range(len(array_numbers)), array_numbers, c=colours)

# create ticklabels:
y_tick_labels = ['sensor-{}'.format(a) for a in range(7)]

# set positions of ticks, and add names
ax.set_yticks(range(7))
ax.set_yticklabels(y_tick_labels)