Rótulos de escala de data #

A plotagem de data Matplotlib é feita convertendo instâncias de data em dias desde uma época (por padrão 1970-01-01T00:00:00). O matplotlib.datesmódulo fornece as funções de conversor date2num e num2dateque convertem objetos de datetime.datetimee numpy.datetime64 para a representação interna do Matplotlib. Esses tipos de dados são registrados com o mecanismo de conversão de unidades descrito em matplotlib.units, portanto, a conversão ocorre automaticamente para o usuário. O processo de registro também define o tick padrão locatore formatterpara o eixo ser AutoDateLocatore AutoDateFormatter.

Um formatador alternativo é o ConciseDateFormatter, usado no segundo Axesabaixo (consulte Formatando tiques de data usando ConciseDateFormatter ), que muitas vezes elimina a necessidade de girar os rótulos dos tiques. O último Axesformata as datas manualmente, usando DateFormatterpara formatar as datas usando as strings de formato documentadas em datetime.date.strftime.

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

Tempo total de execução do script: ( 0 minutos 1,408 segundos)

Galeria gerada por Sphinx-Gallery