Matplotlib é uma poderosa biblioteca Python para criação de visualizações. Embora rotular o eixo y principal seja simples, adicionar um rótulo a um eixo y secundário requer uma abordagem ligeiramente diferente. Este artigo o guiará pelo processo, cobrindo técnicas básicas e de personalização avançadas.
Sumário
- Entendendo os Eixos Y no Matplotlib
- Adicionando um Rótulo ao Eixo Y Secundário
- Personalizando o Rótulo do Eixo Y
- Usando Pandas DataFrames
- Conclusão
- FAQ
Entendendo os Eixos Y no Matplotlib
Gráficos Matplotlib geralmente têm um único eixo y representando a variável dependente. No entanto, ao comparar conjuntos de dados com escalas muito diferentes, usar um eixo y principal e um secundário melhora a legibilidade. Cada eixo pode ser personalizado independentemente com rótulos, marcas e muito mais.
Adicionando um Rótulo ao Eixo Y Secundário
A função twinx()
do Matplotlib cria um eixo y secundário compartilhando o mesmo eixo x. O rótulo é então definido usando o método set_ylabel()
neste novo objeto de eixo.
import matplotlib.pyplot as plt
# Dados de exemplo
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 1, 3, 5]
y2 = [10, 20, 15, 25, 30]
# Cria a figura e os eixos
fig, ax1 = plt.subplots()
# Plota o primeiro conjunto de dados
ax1.plot(x, y1, color='blue', label='Conjunto de Dados 1')
ax1.set_xlabel('Eixo X')
ax1.set_ylabel('Rótulo do Eixo Y1', color='blue')
ax1.tick_params('y', labelcolor='blue')
ax1.legend(loc='upper left')
# Cria o eixo y secundário
ax2 = ax1.twinx()
# Plota o segundo conjunto de dados
ax2.plot(x, y2, color='red', label='Conjunto de Dados 2')
ax2.set_ylabel('Rótulo do Eixo Y2', color='red') # Rótulo para o eixo y secundário
ax2.tick_params('y', labelcolor='red')
ax2.legend(loc='upper right')
plt.title('Gráfico com Eixo Y Secundário')
plt.show()
Personalizando o Rótulo do Eixo Y
Você pode personalizar a aparência do rótulo:
- Tamanho da fonte:
ax2.set_ylabel('Rótulo', fontsize=14)
- Família da fonte:
ax2.set_ylabel('Rótulo', fontfamily='serif')
- Rotação:
ax2.set_ylabel('Rótulo', rotation=270)
- Formatação LaTeX:
ax2.set_ylabel(r'$Delta$Rótulo')
Usando Pandas DataFrames
Com Pandas, o processo é semelhante:
import pandas as pd
import matplotlib.pyplot as plt
data = {'x': [1, 2, 3, 4, 5], 'y1': [2, 4, 1, 3, 5], 'y2': [10, 20, 15, 25, 30]}
df = pd.DataFrame(data)
fig, ax1 = plt.subplots()
df.plot(x='x', y='y1', ax=ax1, color='blue', label='Conjunto de Dados 1')
ax1.set_ylabel('Rótulo do Eixo Y1', color='blue')
ax1.legend(loc='upper left')
ax2 = ax1.twinx()
df.plot(x='x', y='y2', ax=ax2, color='red', label='Conjunto de Dados 2')
ax2.set_ylabel('Rótulo do Eixo Y2', color='red')
ax2.legend(loc='upper right')
plt.show()
Conclusão
Adicionar e personalizar rótulos de eixos y secundários no Matplotlib melhora a clareza da visualização de dados. twinx()
e set_ylabel()
são suas ferramentas principais para criar gráficos informativos e visualmente atraentes.
FAQ
- P: Múltiplos eixos y secundários? R: Sim, mas eixos excessivos podem prejudicar a legibilidade.
- P: Ajustando limites? R: Use
ax2.set_ylim(ymin, ymax)
. - P: Escalas diferentes? R: Eixos y secundários são projetados para isso; o Matplotlib cuida da escala.