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.