Maison >développement back-end >Tutoriel Python >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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 09:31:27936parcourir

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 fournit 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 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.

Le 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 :

<code class="python">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()</code>

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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn