2015-06-25 62 views
4

我試圖做一個圖,其中x軸是時間,Y軸是一個柱狀圖,將有覆蓋一定的時間段是這樣的吧:浮動條形圖

      ______________ 
         |_____________| 

    _____________________ 
    |___________________| 
-----------------------------------------------------> 
      time 

我有2個日期時間值列表,用於我希望涵蓋的這些時間的開始和結束。到目前爲止,我有

x = np.array([dt.datetime(2010, 1, 8, i,0) for i in range(24)]) 

覆蓋24小時。我的問題是,我如何設置和繪製我的y值看起來像這樣?

回答

1

你可以使用plt.barh

import datetime as DT 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 

start = [DT.datetime(2000,1,1)+DT.timedelta(days=i) for i in (2,0,3)] 
end = [s+DT.timedelta(days=i) for s,i in zip(start, [15,7,10])] 
start = mdates.date2num(start) 
end = mdates.date2num(end) 
yval = [1,2,3] 
width = end-start 

fig, ax = plt.subplots() 
ax.barh(bottom=yval, width=width, left=start, height=0.3) 
xfmt = mdates.DateFormatter('%Y-%m-%d') 
ax.xaxis.set_major_formatter(xfmt) 
# autorotate the dates 
fig.autofmt_xdate() 
plt.show() 

產生

enter image description here