2016-11-28 116 views
1

我有這樣大熊貓情節axvspan

from datetime import date 
import random 

start_date = date.today().replace(day=1, month=1).toordinal() 
end_date = date.today().toordinal() 

df=pd.DataFrame.from_dict({'dates':[ date.fromordinal(random.randint(start_date, end_date)) for i in xrange(10) ] 
         ,'n':np.random.randint(0,100,10)}) 
df.index=df['dates']; del df['dates'] 
df.sort_index(inplace=True) 

一個數據幀生成

   n 
dates   
2016-01-24 0 
2016-02-26 98 
2016-03-04 68 
2016-03-26 45 
2016-05-03 89 
2016-05-09 83 
2016-05-11 58 
2016-07-29 53 
2016-09-18 79 
2016-10-20 57 

我想繪製它並有二月和三月axvspan。由於我的日期是隨機的我怎麼能選擇那些2個月使用axvspan

我的繪製代碼簡單

ax=df.plot() 
+2

是否axvspan(pd.datetime(2016,2,1),pd.datetime(2016,4,1))給你你想要什麼? –

+0

這是有效的。出於某種原因,當我在循環內執行ax.axvspan(pd.datetime(2016,2,1),pd.datetime(2016,4,1))時,我什麼都看不到。否則,它的作品 – NinjaGaiden

回答

1

下面是一個例子。如果日期跨越幾年,它必須得到改進。由於原理完全相同,您也可以檢查this question的答案。

ax = df.plot() 
# Getting the boundaries for dates in feb and march 
period = df[(df.index.month > 1) & (df.index.month < 3)].index 
# Highlighting 
ax.axvspan(min(period) - MonthBegin(), max(period) + MonthEnd(), 
      facecolor='g', edgecolor='none', alpha=.2) 

enter image description here