matplotlib画条状时间序列图

想画一个台站的运行状态图像,如果某天台站正常运行,则在该天用方框标识为红色,否则就空在那里,因此该图像是个时间序列的条状图。

在这里找到了解决方案

stackoverflow.com/questions/44951911/plot-a-binary-timeline-in-maplotlib

用的是broken_barh函数

要注意的问题有:

这个函数貌似不认识日期类型的数据,因此要将日期转为数值,这里用到了

matplotlib.dates.date2num

但如果直接出图,会发现x轴坐标是数值而不是日期,因此还要对x轴的属性进行修改,类似于这样的语句

ax.xaxis.set_major_locator(matplotlib.dates.MonthLocator())

ax.xaxis.set_minor_locator(matplotlib.dates.YearLocator())



broken_barh函数主要包含x和y两个参数,其中x的构成是

(start,offset)

也可以是由这种tuple构成的list。画图的时候方框在x轴的起点是start,终点是start+offset

参数y类似,但如果高度固定,给定一个tuple就够了,可以如下处理

inxval=matplotlib.dates.date2num(test_ser)

times=list(zip(inxval,np.ones(len(test_ser))))

plt.broken_barh(times,(-1,1),color='red')

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注