tiempo real libreria histogramas graficar axessubplot add_subplot python time matplotlib plot histogram

python - real - Histograma en matplotlib, tiempo en el eje x



matplotlib title position (2)

Soy nuevo en matplotlib (1.3.1-2) y no puedo encontrar un lugar adecuado para comenzar. Quiero trazar la distribución de puntos a lo largo del tiempo en un histograma con matplotlib.

Básicamente quiero trazar la suma acumulada de la ocurrencia de una fecha.

date 2011-12-13 2011-12-13 2013-11-01 2013-11-01 2013-06-04 2013-06-04 2014-01-01 ...

Eso haría

2011-12-13 -> 2 times 2013-11-01 -> 3 times 2013-06-04 -> 2 times 2014-01-01 -> once

Dado que habrá muchos puntos durante muchos años, quiero establecer la start date en mi x-Axis y la end date , y luego marcar n-time steps (es decir, los pasos de 1 año) y, finalmente, decidir cuántas bins habrá.

¿Cómo lograría eso?


Matplotlib utiliza su propio formato para fechas / horas, pero también proporciona funciones simples para convertir que se proporcionan en el módulo de dates . También proporciona varios Locators y Formatters que se encargan de colocar las marcas en el eje y de formatear las etiquetas correspondientes. Esto debería ayudarte a comenzar:

import random import matplotlib.pyplot as plt import matplotlib.dates as mdates # generate some random data (approximately over 5 years) data = [float(random.randint(1271517521, 1429197513)) for _ in range(1000)] # convert the epoch format to matplotlib date format mpl_data = mdates.epoch2num(data) # plot it fig, ax = plt.subplots(1,1) ax.hist(mpl_data, bins=50, color=''lightblue'') ax.xaxis.set_major_locator(mdates.YearLocator()) ax.xaxis.set_major_formatter(mdates.DateFormatter(''%d.%m.%y'')) plt.show()

Resultado:


Para agregar a la respuesta de hitzg, puede usar AutoDateLocator y AutoDateFormatter para que matplotlib haga la ubicación y el formato por usted:

locator = mdates.AutoDateLocator() ax.xaxis.set_major_locator(locator) ax.xaxis.set_major_formatter(mdates.AutoDateFormatter(locator))