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 - Prevenindo Legendases Cortadas com
bbox_extra_artists
ebbox_inches
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.