No Matplotlib, mover a legenda para fora do eixo do gráfico geralmente resulta em seu corte pela caixa da figura. Embora a redução do eixo tenha sido sugerida como uma solução, ela diminui a visibilidade dos dados, especialmente ao apresentar gráficos complexos com numerosas entradas de legenda.
Uma abordagem mais eficaz, conforme destacado na resposta de Benjamin Root na lista de discussão Matplotlib, envolve modificando a chamada savefig para incorporar a legenda como um artista extra:
fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')
Este método, semelhante ao usar tight_layout, permite que o savefig considere a legenda ao calcular o tamanho da caixa da figura.
O seguinte exemplo de código aprimorado demonstra a solução:
import matplotlib.pyplot as plt import numpy as np plt.gcf().clear() x = np.arange(-2*np.pi, 2*np.pi, 0.1) fig = plt.figure(1) ax = fig.add_subplot(111) ax.plot(x, np.sin(x), label='Sine') ax.plot(x, np.cos(x), label='Cosine') ax.plot(x, np.arctan(x), label='Inverse tan') handles, labels = ax.get_legend_handles_labels() lgd = ax.legend(handles, labels, loc='upper center', bbox_to_anchor=(0.5,-0.1)) text = ax.text(-0.2,1.05, "Aribitrary text", transform=ax.transAxes) ax.set_title("Trigonometry") ax.grid('on') fig.savefig('samplefigure', bbox_extra_artists=(lgd,text), bbox_inches='tight')
Isso agora ajusta dinamicamente o tamanho da caixa da figura para acomodar a legenda, evitando seu corte enquanto mantém a visibilidade dos dados.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3