我有一个日期(日期时间对象)的索引数组(x)和一个实际值数组(y:债券价格)。做(在iPython中):
plot(x,y)
生成完美精细的时间序列图,x轴标有日期。到目前为止没问题。但我想在某些日期添加文字。例如,在2009-10-31,我希望在该日期显示带有指向 y 值的箭头的“事件1”文本。
我已经通过 text()和 annotate()上的Matplotlib文档阅读无济于事。它只涵盖了标准编号的x轴,我无法推断如何在我的问题上运用这些例子。
谢谢
答案 0 :(得分:56)
Matplotlib对日期使用内部浮点格式。
您只需将日期转换为该格式(使用matplotlib.dates.date2num
或matplotlib.dates.datestr2num
),然后照常使用annotate
。
作为一个有点过于花哨的例子:
import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
x = [dt.datetime(2009, 05, 01), dt.datetime(2010, 06, 01),
dt.datetime(2011, 04, 01), dt.datetime(2012, 06, 01)]
y = [1, 3, 2, 5]
fig, ax = plt.subplots()
ax.plot_date(x, y, linestyle='--')
ax.annotate('Test', (mdates.date2num(x[1]), y[1]), xytext=(15, 15),
textcoords='offset points', arrowprops=dict(arrowstyle='-|>'))
fig.autofmt_xdate()
plt.show()