如何用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 和 [=19 很好地集成=] 这样做?
我认为这里不需要特殊功能。使用 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
我有以下数据类型:
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 和 [=19 很好地集成=] 这样做?
我认为这里不需要特殊功能。使用 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