Plotagem de Datas com Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Neste laboratório, aprenderemos como criar gráficos de datas usando Matplotlib em Python. Usaremos o módulo matplotlib.dates para converter objetos datetime para a representação interna do Matplotlib. Também aprenderemos como formatar os rótulos dos ticks no eixo x para exibir datas em um formato legível.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar as bibliotecas necessárias

Começaremos importando as bibliotecas necessárias, incluindo matplotlib.pyplot, matplotlib.cbook e matplotlib.dates.

import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import matplotlib.dates as mdates

Carregar os dados

Em seguida, carregaremos os dados que queremos plotar. Usaremos um array de registro numpy a partir de dados CSV do Yahoo com os campos date, open, high, low, close, volume, adj_close do diretório mpl-data/sample_data. O array de registro armazena a data como um np.datetime64 com uma unidade de dia ('D') na coluna de data.

data = cbook.get_sample_data('goog.npz')['price_data']

Criar subplots

Criaremos três subplots para mostrar diferentes opções de formatação para os rótulos de marcação (tick labels).

fig, axs = plt.subplots(3, 1, figsize=(6.4, 7), layout='constrained')

Plotar os dados

Plotaremos os dados em todos os três subplots usando a função plot.

for ax in axs:
    ax.plot('date', 'adj_close', data=data)
    ax.grid(True)
    ax.set_ylabel(r'Price [\$]')

Formatar os rótulos de marcação usando o formatador padrão

Formataremos os rótulos de marcação no primeiro subplot usando o formatador padrão.

ax = axs[0]
ax.set_title('DefaultFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_locator(mdates.MonthLocator(bymonth=(1, 7)))
ax.xaxis.set_minor_locator(mdates.MonthLocator())

Formatar os rótulos de marcação usando o formatador conciso

Formataremos os rótulos de marcação no segundo subplot usando o formatador conciso.

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()))

Formatar os rótulos de marcação manualmente

Formataremos os rótulos de marcação no terceiro subplot manualmente usando DateFormatter para formatar as datas usando as strings de formato documentadas em datetime.date.strftime.

ax = axs[2]
ax.set_title('Manual DateFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%b'))
for label in ax.get_xticklabels(which='major'):
    label.set(rotation=30, horizontalalignment='right')

Exibir o gráfico

Finalmente, exibiremos o gráfico usando a função show.

plt.show()

Resumo

Neste laboratório, aprendemos como criar gráficos de data usando Matplotlib em Python. Usamos o módulo matplotlib.dates para converter objetos datetime para a representação interna do Matplotlib. Também aprendemos como formatar os rótulos de marcação no eixo x para exibir datas em um formato legível.