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: