"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 posso evitar anotações sobrepostas nas visualizações do Matplotlib?

Como posso evitar anotações sobrepostas nas visualizações do Matplotlib?

Publicado em 2024-11-08
Navegar:932

How can I prevent overlapping annotations in Matplotlib visualizations?

Overlapping Annotations in Matplotlib

As visualizações do Matplotlib geralmente encontram o problema de anotações sobrepostas, levando a gráficos desordenados e difíceis de interpretar. Este artigo fornece uma solução abrangente para enfrentar esse desafio.

O Herausforderung

Anotações sobrepostas surgem quando várias anotações compartilham o mesmo espaço de tela, criando confusão visual. No código fornecido, o texto da anotação para pontos de dados tende a se sobrepor, especialmente em regiões mais densas do gráfico.

O Lösung

Para evitar anotações sobrepostas, a biblioteca AdjustText, escrita por Phlya, oferece uma solução simples e eficaz. Esta biblioteca ajusta automaticamente a posição das anotações para minimizar sobreposições e, ao mesmo tempo, manter a legibilidade.

Usando AdjustText

O trecho de código a seguir demonstra como usar AdjustText para otimizar o posicionamento da anotação no exemplo fornecido:

import matplotlib.pyplot as plt
from adjustText import adjust_text

# ... (code to generate the data and plot remain the same as before) ...

plt.xlabel("Proportional Euclidean Distance")
plt.ylabel("Percentage Timewindows Attended")
plt.title("Test plot")

texts = [x for (x,y,z) in together]
eucs = [y for (x,y,z) in together]
covers = [z for (x,y,z) in together]

p1 = plt.plot(eucs,covers,color="black", alpha=0.5)
texts = []
for x, y, s in zip(eucs, covers, text):
    texts.append(plt.text(x, y, s))

adjust_text(texts, only_move={'points':'y', 'texts':'y'}, arrowprops=dict(arrowstyle="->", color='r', lw=0.5))
plt.show()

Personalizando o posicionamento do texto

adjustText oferece várias opções de personalização para ajustar o posicionamento das anotações. Por exemplo, ele permite controlar quais elementos são móveis (parâmetro only_move), o alinhamento das anotações e a força de repulsão entre objetos de texto.

Ao experimentar esses parâmetros, você pode obter o posicionamento de texto ideal que maximiza a clareza e o apelo visual em seus gráficos Matplotlib sem a preocupação de anotações sobrepostas.

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