Nota
Haga clic aquí para descargar el código de ejemplo completo
Etiquetas de marca de fecha #
El trazado de fechas de Matplotlib se realiza convirtiendo las instancias de fecha en días desde una época (por defecto, 1970-01-01T00:00:00). El
matplotlib.datesmódulo proporciona las funciones de conversión date2num
y num2dateque convierte datetime.datetimey numpy.datetime64
objetos hacia y desde la representación interna de Matplotlib. Estos tipos de datos se registran con el mecanismo de conversión de unidades descrito en
matplotlib.units, por lo que la conversión se realiza automáticamente para el usuario. El proceso de registro también establece la marca predeterminada locatory
formatterpara que el eje sea AutoDateLocatory
AutoDateFormatter.
Un formateador alternativo es el ConciseDateFormatter, que se usa en el segundo a Axescontinuación (consulte
Formatear marcas de fecha usando ConciseDateFormatter ), que a menudo elimina la necesidad de rotar las etiquetas de marcas. El último Axesformatea las fechas manualmente, usando
DateFormatterpara formatear las fechas usando las cadenas de formato documentadas en datetime.date.strftime.

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.cbook as cbook
# Load a numpy record array from yahoo csv data with fields date, open, high,
# low, close, volume, adj_close from the mpl-data/sample_data directory. The
# record array stores the date as an np.datetime64 with a day unit ('D') in
# the date column.
data = cbook.get_sample_data('goog.npz', np_load=True)['price_data']
fig, axs = plt.subplots(3, 1, figsize=(6.4, 7), constrained_layout=True)
# common to all three:
for ax in axs:
ax.plot('date', 'adj_close', data=data)
# Major ticks every half year, minor ticks every month,
ax.xaxis.set_major_locator(mdates.MonthLocator(bymonth=(1, 7)))
ax.xaxis.set_minor_locator(mdates.MonthLocator())
ax.grid(True)
ax.set_ylabel(r'Price [\$]')
# different formats:
ax = axs[0]
ax.set_title('DefaultFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax = axs[1]
ax.set_title('ConciseFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_formatter(
mdates.ConciseDateFormatter(ax.xaxis.get_major_locator()))
ax = axs[2]
ax.set_title('Manual DateFormatter', loc='left', y=0.85, x=0.02,
fontsize='medium')
# Text in the x axis will be displayed in 'YYYY-mm' format.
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%b'))
# Rotates and right-aligns the x labels so they don't crowd each other.
for label in ax.get_xticklabels(which='major'):
label.set(rotation=30, horizontalalignment='right')
plt.show()
Tiempo total de ejecución del script: (0 minutos 1.408 segundos)