2014-02-07 137 views
1

我正在绘制一些二维时间序列数据,并且我想用X或某个其他标记在图上标记特定日期。例如,如果我拥有过去6个月中每个日期的所有数据,并且我想指出圣诞节在这个情节中的位置。最简单的方法是什么?我可以手动完成,但更愿意添加一些在我的代码中自动完成的东西。在熊猫图上标记事件点

编辑:我到目前为止的尝试。不知道是否有什么更好的工作。我比较日期对象时遇到了一些麻烦,这就是为什么比较字符串按原样分割的原因。

filt1.plot(figsize=(16,16)) 
filt3=filtered[(filtered.index.year==2012)&(filtered.index.month==12)&(filtered.index.day==25)]["Income_MA"] 
filt3.plot(style="ro") 
+0

你能告诉我们一个你尝试过的没有用的例子吗? – tacaswell

+0

我用我目前的解决方案编辑了我的帖子。 – mrdst

+3

你在找'annotate'是'axvline'吗? – tacaswell

回答

0

跟随tcaswell的评论,这样的事情可能适合你吗?

df = pd.Series(np.random.rand(180), index=pd.date_range(start=pd.datetime(2000, 9, 1), periods=180, freq='D')) 
xmas_date = pd.datetime(2000, 12, 25) 

myax = df.cumsum().plot() 
ylims = myax.get_ylim() 
myax.vlines(xmas_date, ylims[0], ylims[1]) 
myax.annotate("Xmas", xy=(xmas_date, ylims[1]), 
       xytext=(-12, 5), 
       textcoords='offset points') 
myax.set_ylim(ylims) 

给予

enter image description here

这是一个脆弱的解决方案,因为我已经手动设置一个日期来标注,但它应该是很容易将保鲜膜的代码在一个函数并调用它你感兴趣的每一个日期。