繁体   English   中英

如何使用matplotlib绘制条形时间轴?

[英]How to draw a bar timeline with matplotlib?

我有以下类型的数据:

Begin   End                        Event
 2003  2007                      Event 1
 1991  2016                      Event 2
 2008  2016                      Event 3
 1986  2015                      Event 4
 2013  2013                      Event 5
 1994  1999                      Event 6
 2002  2002                      Event 7

我的目标是制作这些事件的时间表,即从日期1到日期2绘制一系列不同的直线和水平线条,并在其上显示事件的名称。

我目前正在尝试使用matplotlib的barh函数,但是我想知道在python中是否已经有一个现成的模块可以很好地与matplotlib和pandas集成呢?

我认为这里不需要特殊功能。 使用plt.barh直接为您提供所需的图。

import matplotlib.pyplot as plt
import numpy as np

begin = np.array([2003,1991,2008,1986,2013,1994,2002])
end =   np.array([2007,2016,2016,2015,2013,1999,2002])
event = ["Event {}".format(i) for i in range(len(begin))]

plt.barh(range(len(begin)),  end-begin, left=begin)

plt.yticks(range(len(begin)), event)
plt.show()

在此输入图像描述

请注意,事件4和6似乎缺失,因为开始和结束是相同的。 如果你想将end解释为年末,你可以加1,

plt.barh(range(len(begin)),  end-begin+1, left=begin)

在此输入图像描述

如下所示对输入数据进行了不同的连续处理,对输入数据更加自然:

events = [('Event 0', 2003, 2007),
     ('Event 1', 1991, 2016),
     ('Event 2', 2008, 2016)
     #...
     ]

还包含在一个函数中,正如问题作者可能想要的那样。

请参阅https://github.com/epogrebnyak/hrange/blob/master/hrange.py

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM