2015-12-20 10 views
5

Matplotlib consente di impostare il testo all'interno della trama con matplotlib.axes.Axes.text().Matplotlib, impostazione del testo nel grafico con plt.text() con i dati delle serie temporali dei panda

Sto pianificando i dati della serie Pandas, quindi le assi x sono le date.

Datetime 
2014-11-08 345 
2014-11-09 678 
2014-11-10 987 
2014-11-11 258 
Freq: W-SUN, dtype: int64 

Se volessi aggiungere del testo aggiungere posizione (x,y) = (2014-11-08, 345), come potrei fare questo? 2014-11-08 non è in realtà il valore x sull'asse x. Come posso trovare questo luogo?

risposta

6

Ci sono diverse opzioni. È possibile utilizzare i valori dall'indice degli oggetti della serie, date o datetime oggetti dalla libreria standard Python datetime o dall'oggetto Timestamp panda per impostare la posizione dell'asse x di un'etichetta su un grafico di serie temporali.

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() 

The result