Centralizando Rótulos Entre Marcas

Beginner

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

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:

  1. Carregamos os dados financeiros
  2. Criamos o gráfico
  3. Definimos os localizadores e formatadores principais e secundários
  4. Removemos os rótulos das marcas principais e as marcas secundárias
  5. Alinhamos os rótulos das marcas secundárias ao centro entre as marcas principais
  6. Mostramos o gráfico.