Tiempo de trazado en Python con Matplotlib

Tengo una matriz de marcas de hora en el formato (HH: MM: SS.mmmmmm) y otra matriz de números de punto flotante, cada uno correspondiente a un valor en la matriz de la marca de hora.

¿Puedo trazar el tiempo en el eje x y los números en el eje y usando Matplotlib?

Lo intentaba, pero de alguna manera solo aceptaba matrices de carrozas. ¿Cómo puedo conseguirlo para trazar el tiempo? ¿Tengo que modificar el formato de alguna manera?

Primero debe convertir sus marcas de tiempo en objetos datetime Python (use datetime.strptime ). Luego use date2num para convertir las fechas al formato matplotlib.

Grafica las fechas y valores usando plot_date :

 dates = matplotlib.dates.date2num(list_of_datetimes) matplotlib.pyplot.plot_date(dates, values) 

También puede trazar la marca de tiempo, pares de valores utilizando pyplot.plot (después de analizarlos desde su representación de cadena). (Probado con matplotlib versiones 1.2.0 y 1.3.1.)

Ejemplo:

 import datetime import random import matplotlib.pyplot as plt # make up some data x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)] y = [i+random.gauss(0,1) for i,_ in enumerate(x)] # plot plt.plot(x,y) # beautify the x-labels plt.gcf().autofmt_xdate() plt.show() 

Imagen resultante:

Línea Plot


Aquí es lo mismo que un diagtwig de dispersión:

 import datetime import random import matplotlib.pyplot as plt # make up some data x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)] y = [i+random.gauss(0,1) for i,_ in enumerate(x)] # plot plt.scatter(x,y) # beautify the x-labels plt.gcf().autofmt_xdate() plt.show() 

Produce una imagen similar a esta:

Gráfico de dispersión

7 años después y este código me ha ayudado. Sin embargo, mis tiempos todavía no se mostraban correctamente.

introduzca la descripción de la imagen aquí

Usando Matplotlib 2.0.0 y tuve que agregar el siguiente bit de código de Edición del formato de fecha de las tags de marca del eje x en matplotlib por Paul H.

 import matplotlib.dates as mdates myFmt = mdates.DateFormatter('%d') ax.xaxis.set_major_formatter(myFmt) 

Cambié el formato a (% H:% M) y la hora se mostró correctamente. introduzca la descripción de la imagen aquí

Todo gracias a la comunidad.

Tuve problemas con esto usando la versión matplotlib: 2.0.2. Siguiendo el ejemplo de arriba, obtuve un conjunto de burbujas astackdas centradas.

gráfico con pila centrada de burbujas

He “arreglado” el problema agregando otra línea:

 plt.plot([],[]) 

El fragmento de código completo se convierte en:

 import datetime import random import matplotlib.pyplot as plt import matplotlib.dates as mdates # make up some data x = [datetime.datetime.now() + datetime.timedelta(minutes=i) for i in range(12)] y = [i+random.gauss(0,1) for i,_ in enumerate(x)] # plot plt.plot([],[]) plt.scatter(x,y) # beautify the x-labels plt.gcf().autofmt_xdate() myFmt = mdates.DateFormatter('%H:%M') plt.gca().xaxis.set_major_formatter(myFmt) plt.show() plt.close() 

Esto produce una imagen con las burbujas distribuidas como se desee.

Gráfico con burbujas distribuidas en el tiempo.