Matplotlib,使用带有pandas时间序列数据的plt.text()设置绘图文本

Sha*_*ang 7 python plot matplotlib

Matplotlib允许用户在剧情中设置文本matplotlib.axes.Axes.text().

我正在绘制Pandas系列数据,所以x轴是日期.

Datetime
2014-11-08    345
2014-11-09    678 
2014-11-10    987
2014-11-11    258
Freq: W-SUN, dtype: int64
Run Code Online (Sandbox Code Playgroud)

如果我想添加文字添加位置(x,y) = (2014-11-08, 345),我该怎么做?2014-11-08实际上并不是x轴上的x值.我怎样才能找到这个位置?

Mar*_*gur 7

有几种选择.您可以使用来自Series对象的值指标,datedatetime对象从Python标准库datetime或大熊猫Timestamp对象设置标签的x轴位置上的时间序列图.

import pandas as pd
from pandas import Timestamp
import datetime as dt
import matplotlib.pyplot as plt

s = pd.Series({Timestamp('2014-11-08 00:00:00'): 345,
    Timestamp('2014-11-09 00:00:00'): 678,
    Timestamp('2014-11-10 00:00:00'): 987,
    Timestamp('2014-11-11 00:00:00'): 258})

fig = plt.figure()
ax = fig.gca()
s.plot(ax=ax)

i = 0
ax.text(s.index[i], s.iloc[i], "Hello")
ax.text(dt.date(2014, 11, 9), 500, "World")
ax.text(Timestamp("2014-11-10"), 777, "!!!")

plt.show()
Run Code Online (Sandbox Code Playgroud)

结果