"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je empêcher les annotations qui se chevauchent dans les visualisations Matplotlib ?

Comment puis-je empêcher les annotations qui se chevauchent dans les visualisations Matplotlib ?

Publié le 2024-11-08
Parcourir:566

How can I prevent overlapping annotations in Matplotlib visualizations?

Annotations qui se chevauchent dans Matplotlib

Les visualisations Matplotlib rencontrent souvent le problème des annotations qui se chevauchent, conduisant à des graphiques encombrés et difficiles à interpréter. Cet article propose une solution complète pour relever ce défi.

La Herausforderung

Les annotations qui se chevauchent surviennent lorsque plusieurs annotations partagent le même espace d'écran, créant ainsi un encombrement visuel. Dans le code fourni, le texte d'annotation des points de données a tendance à se chevaucher, en particulier dans les régions les plus denses du graphique.

The Lösung

Pour éviter le chevauchement des annotations, la bibliothèque ajusterText, écrite par Phlya, propose une solution simple et efficace. Cette bibliothèque ajuste automatiquement la position des annotations pour minimiser les chevauchements tout en conservant la lisibilité.

Utilisation de ajusterText

L'extrait de code suivant montre comment utiliser ajusterText pour optimiser le placement des annotations dans l'exemple fourni :

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

Personnalisation du placement du texte

adjustText propose diverses options de personnalisation pour affiner le placement des annotations. Par exemple, il vous permet de contrôler quels éléments sont mobiles (paramètre only_move), l'alignement des annotations et la force de répulsion entre les objets texte.

En expérimentant ces paramètres, vous pouvez obtenir un placement de texte optimal qui maximise la clarté et l'attrait visuel de vos graphiques Matplotlib sans vous soucier des annotations qui se chevauchent.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3