Introdução
Neste laboratório, aprenderemos como centralizar rótulos entre as marcas de escala (ticks) em um gráfico Matplotlib usando Python. Por padrão, os rótulos das marcas de escala são alinhados em relação à sua marca associada, mas não há uma maneira direta de centralizar os rótulos entre as marcas. No entanto, podemos colocar um rótulo nas marcas de escala menores (minor ticks) entre as marcas de escala maiores (major ticks) e ocultar os rótulos das marcas de escala maiores e as marcas de escala menores para simular esse comportamento. Usaremos dados financeiros do preço das ações do Google para demonstrar essa técnica.
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 às limitações do 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ê.
Carregar os Dados Financeiros
Primeiramente, precisamos carregar alguns dados financeiros do preço das ações do Google usando a função cbook.get_sample_data() do Matplotlib. Usaremos os últimos 250 dias de dados.
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cbook as cbook
## Carrega alguns dados financeiros; preço das ações do Google
r = cbook.get_sample_data('goog.npz')['price_data'].view(np.recarray)
r = r[-250:] ## obtém os últimos 250 dias
Criar o Gráfico
Em seguida, criaremos o gráfico usando a função subplots() do Matplotlib e plotaremos o preço de fechamento ajustado das ações do Google ao longo do tempo.
fig, ax = plt.subplots()
ax.plot(r.date, r.adj_close)
Definir os Localizadores e Formatadores Principais e Secundários
Para centralizar os rótulos entre as marcas (ticks), precisamos definir os localizadores e formatadores principais e secundários para o eixo x. Usaremos a função dates.MonthLocator() para definir os localizadores principais e secundários para o mês e a função dates.DateFormatter() para formatar os rótulos das marcas secundárias para a abreviação do mês.
import matplotlib.dates as dates
import matplotlib.ticker as ticker
ax.xaxis.set_major_locator(dates.MonthLocator())
## 16 é uma ligeira aproximação, pois os meses diferem no número de dias.
ax.xaxis.set_minor_locator(dates.MonthLocator(bymonthday=16))
ax.xaxis.set_major_formatter(ticker.NullFormatter())
ax.xaxis.set_minor_formatter(dates.DateFormatter('%b'))
Remover os Rótulos das Marcas Principais e as Marcas Secundárias
Para simular o comportamento de centralização dos rótulos entre as marcas (ticks), precisamos remover os rótulos das marcas principais e as marcas secundárias e mostrar apenas os rótulos das marcas secundárias. Podemos fazer isso usando a função tick_params() e definindo os parâmetros tick1On e tick2On como False.
## Remove the tick lines
ax.tick_params(axis='x', which='minor', tick1On=False, tick2On=False)
Alinhar os Rótulos das Marcas Secundárias
Finalmente, precisamos alinhar os rótulos das marcas secundárias ao centro entre as marcas principais. Podemos fazer isso usando a função get_xticklabels() e definindo o parâmetro minor como True para obter os rótulos das marcas secundárias. Em seguida, podemos iterar pelos rótulos e definir o alinhamento horizontal como 'center'.
## Align the minor tick label
for label in ax.get_xticklabels(minor=True):
label.set_horizontalalignment('center')
imid = len(r) // 2
ax.set_xlabel(str(r.date[imid].item().year))
Mostrar o Gráfico
Agora podemos mostrar o gráfico usando a função show().
plt.show()
Resumo
Neste laboratório, aprendemos como centralizar rótulos entre as marcas em um gráfico Matplotlib usando Python. Usamos dados financeiros do preço das ações do Google para demonstrar esta técnica e seguimos os seguintes passos:
- Carregamos os dados financeiros
- Criamos o gráfico
- Definimos os localizadores e formatadores principais e secundários
- Removemos os rótulos das marcas principais e as marcas secundárias
- Alinhamos os rótulos das marcas secundárias ao centro entre as marcas principais
- Mostramos o gráfico.