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.

DefaultFormatter, ConciseFormatter, Manual DateFormatter
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)

Galería generada por Sphinx-Gallery