"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo evitar la superposición de anotaciones en visualizaciones de Matplotlib?

¿Cómo puedo evitar la superposición de anotaciones en visualizaciones de Matplotlib?

Publicado el 2024-11-08
Navegar:853

How can I prevent overlapping annotations in Matplotlib visualizations?

Anotaciones superpuestas en Matplotlib

Las visualizaciones de Matplotlib a menudo encuentran el problema de anotaciones superpuestas, lo que genera gráficos desordenados y difíciles de interpretar. Este artículo proporciona una solución integral para abordar este desafío.

The Herausforderung

Las anotaciones superpuestas surgen cuando varias anotaciones comparten el mismo espacio de pantalla, creando desorden visual. En el código proporcionado, el texto de anotación para los puntos de datos tiende a superponerse, especialmente en regiones más densas del gráfico.

The Lösung

Para evitar anotaciones superpuestas, la biblioteca ajustarTexto, escrita por Phlya, ofrece una solución sencilla y eficaz. Esta biblioteca ajusta automáticamente la posición de las anotaciones para minimizar las superposiciones y al mismo tiempo mantener la legibilidad.

Uso de ajustarTexto

El siguiente fragmento de código demuestra cómo usar ajustarTexto para optimizar la ubicación de las anotaciones en el ejemplo proporcionado:

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()

Personalizar la ubicación del texto

adjustText ofrece varias opciones de personalización para ajustar la ubicación de las anotaciones. Por ejemplo, le permite controlar qué elementos se pueden mover (parámetro only_move), la alineación de las anotaciones y la fuerza de repulsión entre los objetos de texto.

Al experimentar con estos parámetros, puede lograr una ubicación óptima del texto que maximiza la claridad y el atractivo visual en sus gráficos Matplotlib sin la preocupación de que las anotaciones se superpongan.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3