想画一个台站的运行状态图像,如果某天台站正常运行,则在该天用方框标识为红色,否则就空在那里,因此该图像是个时间序列的条状图。
在这里找到了解决方案
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')
Post Views: 629