2016-11-28 114 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