2012-06-19 18 views
7

Sto usando Matplotlib per tracciare i dati in funzione del tempo nel formato hh: mm: ss.ms dove ms è millisecondi. Tuttavia, non vedo i millisecondi nella trama. È possibile aggiungerli anche tu?mostrando millisecondi in matplotlib

dates = matplotlib.dates.datestr2num(x_values) # convert string dates to numbers 
plt.plot_date(dates, y_values) # doesn't show milliseconds 
+1

hey, inserisci un codice che mostri cosa stai facendo. In questo modo è un po 'più facile da aiutare, evviva. – fraxel

+0

Potrebbe essere necessario aggiungere qualche qualificatore per definire il numero di posizioni decimali visualizzate, ad esempio% .2f. Tuttavia, senza vedere più del tuo codice, è difficile sapere. – cosmosis

+0

potresti, per favore, postare un esempio? grazie – Bob

risposta

8

Il problema qui è che c'è una classe in formato zecche, e plot_date imposta quella classe a qualcosa che non si vuole: un formattatore automatico che mai traccia millisecondi.

Per modificare questo, è necessario passare da matplotlib.dates.AutoDateFormatter al proprio formattatore. matplotlib.dates.DateFormatter (fmt) crea un formattatore con una stringa di formato datetime.strftime. Non sono sicuro di come farlo mostrare millisecondi, ma mostrerà microsecondi, che spero funzionino per te; è solo uno zero in più, dopo tutto. Prova questo codice:

dates = matplotlib.dates.datestr2num(x_values) # convert string dates to numbers 
plt.plot_date(dates, y_values) # doesn't show milliseconds by default. 

# This changes the formatter. 
plt.gca().xaxis.set_major_formatter(matplotlib.dates.DateFormatter("%H:%M:%S.%f")) 

# Redraw the plot. 
plt.draw()