2012-06-19 15 views
7

Uso matplotlib para representar datos en función del tiempo en formato hh: mm: ss.ms donde ms es milisegundos. Sin embargo, no veo los milisegundos en la trama. ¿Es posible agregarlos también?mostrando milisegundos en matplotlib

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

Hola, por favor publique un código que muestre lo que está haciendo. De esa manera es un poco más fácil de ayudar, aplausos. – fraxel

+0

Puede que necesite agregar algún calificador para definir el número de decimales que se muestran, por ejemplo,% .2f. Sin embargo, sin ver más de su código, es difícil saberlo. – cosmosis

+0

¿podría, por favor, publicar un ejemplo? gracias – Bob

Respuesta

8

El problema aquí es que hay una clase de formato de garrapatas y plot_date establece que la clase a algo que usted no quiere: un formateador automático que nunca se traza milisegundos.

Para cambiar esto, debe cambiar de matplotlib.dates.AutoDateFormatter a su propio formateador. matplotlib.dates.DateFormatter (fmt) crea un formateador con una cadena de formato datetime.strftime. No estoy seguro de cómo mostrar esto en milisegundos, pero mostrará microsegundos, lo cual espero que funcione para usted; es solo un cero extra, después de todo. Pruebe este código:

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