real - python graficos 2d
Creación de gráficos con fecha y hora en etiquetas de ejes con matplotlib (1)
Espero que esto ayude. Siempre he tenido problemas con las fechas de matplotlib. Matplotlib requiere un formato flotante que es días desde época. Las funciones auxiliares num2date
y date2num
junto con python num2date
- date2num
datetime
se pueden usar para convertir a / from. El negocio de formateo se eliminó de this ejemplo. Puede cambiar un eje en cualquier gráfico a un eje de fecha usando set_major_formatter
.
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import dates
import datetime
a = np.array([
[1293605162197, 0, 0],
[1293605477994, 63, 0],
[1293605478057, 0, 0],
[1293605478072, 2735, 1249],
[1293606162213, 0, 0],
[1293606162229, 0, 0]])
d = a[:,0]
y1 = a[:,1]
y2 = a[:,2]
# convert epoch to matplotlib float format
s = d/1000
ms = d-1000*s # not needed?
dts = map(datetime.datetime.fromtimestamp, s)
fds = dates.date2num(dts) # converted
# matplotlib date format object
hfmt = dates.DateFormatter(''%m/%d %H:%M'')
fig = plt.figure()
ax = fig.add_subplot(111)
ax.vlines(fds, y2, y1)
ax.xaxis.set_major_locator(dates.MinuteLocator())
ax.xaxis.set_major_formatter(hfmt)
ax.set_ylim(bottom = 0)
plt.xticks(rotation=''vertical'')
plt.subplots_adjust(bottom=.3)
plt.show()
Tengo mis datos en una matriz de la siguiente estructura,
[[1293606162197, 0, 0],
[1293605477994, 63, 0],
[1293605478057, 0, 0],
[1293605478072, 2735, 1249],
[1293606162213, 0, 0],
[1293606162229, 0, 0]]
La primera columna es el tiempo de época (en ms
), el segundo es y1
y el tercero es y2
. Necesito un diagrama con el tiempo en el eje x, y y1
y y2
en los ejes y izquierdos y derechos.
He estado revisando la documentación pero no he podido encontrar ninguna forma de que mis tics del eje x muestren tanto la fecha como la hora, como "28/12 16:48", es decir, "fecha / hora del mes: minuto". Toda la documentación que me ayuda es mostrar fechas solo, pero eso no es lo que quiero. Cualquier ayuda sería apreciada en esto.
Y, si puede parecer, esto no es tarea. En realidad, es un seguimiento de mi pregunta anterior, Leer y graficar datos leídos de archivos enormes .