"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como evitar a legenda de corte no Matplotlib e manter a visibilidade dos dados?

Como evitar a legenda de corte no Matplotlib e manter a visibilidade dos dados?

Publicado em 2024-11-02
Navegar:745

How to Prevent Cut-off Legend in Matplotlib and Maintain Data Visibility?

Endereçando a legenda de corte no Matplotlib redimensionando a caixa da figura

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.

Declaração de lançamento Este artigo foi reimpresso em: 1729223656 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

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