tiempo real matrices graficos graficas graficar coordenadas python graph plot matplotlib

real - matplotlib python 3



Trazar el tiempo en Python con Matplotlib (4)

Tengo una matriz de marcas de tiempo 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 marca de tiempo.

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

Lo estaba intentando, pero de alguna manera solo aceptaba matrices de carrozas. ¿Cómo puedo hacer para trazar el tiempo? ¿Debo modificar el formato de alguna manera?


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

Usando Matplotlib 2.0.0 y tuve que agregar el siguiente bit de código de Editar el formato de fecha de las etiquetas de tick 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 muestra correctamente.

Todo gracias a la comunidad.


También puede graficar la marca de tiempo, pares de valores usando 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:

Esto es lo mismo que un diagrama 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:


Tuve problemas con esto usando la versión matplotlib: 2.0.2. Ejecutando el ejemplo de arriba, obtuve un conjunto de burbujas centrado y apilado.

"Solucioné" 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.


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

Trace las fechas y valores usando plot_date :

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