Data Visualization

Dominando o Posicionamento de Legendas no Matplotlib

Spread the love

Matplotlib é uma poderosa biblioteca Python para criar visualizações, mas às vezes o posicionamento padrão da legenda pode sobrecarregar seus gráficos. Este artigo demonstra métodos eficazes para posicionar legendas fora da área do gráfico para melhorar a legibilidade.

Sumário

Usando bbox_to_anchor para Posicionamento da Legenda

O argumento bbox_to_anchor na função legend() oferece posicionamento preciso da legenda. Ele recebe uma tupla (x, y) especificando o canto inferior esquerdo da legenda em coordenadas da figura. (0,0) é o canto inferior esquerdo e (1,1) é o canto superior direito. O argumento loc refina ainda mais o posicionamento dentro desse ponto de ancoragem.


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

fig, ax = plt.subplots()
ax.plot(x, y1, label='sin(x)')
ax.plot(x, y2, label='cos(x)')

ax.legend(bbox_to_anchor=(1.1, 1), loc='upper left') # Ajuste (1.1,1) conforme necessário

ax.set_title('Ondas Seno e Cosseno')
ax.set_xlabel('x')
ax.set_ylabel('y')

plt.tight_layout()
plt.show()

Aqui, bbox_to_anchor=(1.1, 1) posiciona a legenda ligeiramente à direita do gráfico (x=1.1) e no topo (y=1). loc='upper left' alinha a legenda dentro dessa âncora. Experimente diferentes valores de loc (por exemplo, ‘upper right’, ‘lower left’, ‘center’) e ajuste as coordenadas (x,y) para um posicionamento ideal.

Prevenindo Legendases Cortadas com bbox_extra_artists e bbox_inches

Legendases grandes ou figuras apertadas podem levar a legendases cortadas mesmo com bbox_to_anchor. bbox_extra_artists e bbox_inches resolvem isso. bbox_extra_artists inclui a legenda no cálculo da caixa delimitadora para salvar, e bbox_inches='tight' garante margens apertadas, evitando cortes.


import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 500)  # Mais dados para uma legenda maior
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)

fig, ax = plt.subplots()
ax.plot(x, y1, label='sin(x)')
ax.plot(x, y2, label='cos(x)')
ax.plot(x, y3, label='tan(x)')

leg = ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left')

fig.savefig('legend_outside.png', bbox_extra_artists=[leg], bbox_inches='tight')

plt.show()

A legenda é armazenada em leg e, em seguida, passada para bbox_extra_artists em savefig. bbox_inches='tight' garante que toda a figura, incluindo a legenda, seja salva. Substitua 'legend_outside.png' pelo nome do arquivo desejado.

Essas técnicas permitem o posicionamento flexível e eficaz da legenda no Matplotlib, melhorando a clareza e o apelo visual de seus gráficos. Experimente diferentes parâmetros para obter o layout perfeito.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *