Matplotlib seaborn时间序列图上的标签

Matplotlib seaborn时间序列图上的标签,matplotlib,seaborn,Matplotlib,Seaborn,我有以下数据框: dates = [pd.Timestamp('2010-01-01T12:10:30'), pd.Timestamp('2010-01-01T12:10:35'), pd.Timestamp('2010-01-01T12:10:40')] df = pd.DataFrame({'ref_date': dates, 'x': [1, 3, 2]}).set_index('ref_date') 如何将每个x值作为文本添加到绘图上?如果x轴不是一个时间序列,那么我可以循环遍历每个值

我有以下数据框:

dates = [pd.Timestamp('2010-01-01T12:10:30'), pd.Timestamp('2010-01-01T12:10:35'), pd.Timestamp('2010-01-01T12:10:40')]
df = pd.DataFrame({'ref_date': dates, 'x': [1, 3, 2]}).set_index('ref_date')
如何将每个x值作为文本添加到绘图上?如果x轴不是一个时间序列,那么我可以循环遍历每个值并使用
ax.text()
,但是当我有时间戳时,我不知道如何这样做,也就是说,我不知道如何计算文本的(x,y)坐标

sns.scatterplot(data=df)
编辑: 有没有一种方法可以动态地使标签不重叠?例如,考虑将这个额外的点添加到上面的代码> df<代码>:<代码> Pd。时间戳(‘2010-01-01T12:10:30.01')< /> >和<代码> 1.03 < /C> > /P>

Matplotlib(和Seaborn)使用自历元以来的日期数来存储日期值。该函数可用于将datetime对象转换为此数值表示形式:

导入matplotlib
打印(matplotlib.dates.date2num(pd.Timestamp('2010-01-01T12:10:30'))
#打印14610.5072916667
要获得文本在x轴上的正确位置,可以使用此功能:

sp=sns.散点图(data=df)
对于索引,df.iterrows()中的行:
sp.axes.text(matplotlib.dates.date2num(索引),第['x']行,第['x']行,size='large')

谢谢@werner。是否有一种方法可以动态移动标签的位置,特别是当两个标签相互重叠时?请看上面的编辑,包括一个例子。有一个关于重叠问题的例子。也许其中一个答案可以帮助你?如果不是,我建议你问一个新问题,因为你对重叠标签的编辑与最初关于timeseries问题的问题有点无关。你是对的。谢谢