在 Pandas 图上标记事件点
Posted
技术标签:
【中文标题】在 Pandas 图上标记事件点【英文标题】:Marking Event Points on a Pandas plot 【发布时间】:2014-03-05 12:18:36 【问题描述】:我正在绘制一些二维时间序列数据,我想用 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")
【问题讨论】:
您能举个例子说明您尝试过的方法没有奏效吗? 我用我当前的解决方案编辑了我的帖子。 您在寻找annotate
是axvline
吗?
注释听起来很完美!我不知道这个功能,我会考虑实现它,谢谢!
【参考方案1】:
跟进 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)
给予
这是一个脆弱的解决方案,因为我手动设置了一个日期来进行注释,但是将代码包装在一个函数中并在您感兴趣的每个日期调用它应该很容易。
【讨论】:
以上是关于在 Pandas 图上标记事件点的主要内容,如果未能解决你的问题,请参考以下文章