[PYTHON] Vous pouvez gérer les caractères qui se chevauchent avec plusieurs plt.text.

Je veux me débarrasser des caractères qui se chevauchent dans plusieurs plt.text.

Si plt.text est attaché plusieurs fois dans l'instruction for, les caractères se chevaucheront et deviendront illisibles ...

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)
x, y = np.random.random((2,30))
fig, ax = plt.subplots()
plt.plot(x, y, 'bo')
texts = [plt.text(x[i], y[i], 'Text%s' %i, ha='center', va='center') for i in range(len(x))]

wiki_example_before.png

** J'ai une belle bibliothèque qui peut résoudre un tel problème, donc je vais la partager **

Insérez simplement AdjustText

On dit que cette bibliothèque a été influencée par le paquet ggrepel de R / ggplot2. (Je ne sais pas pour R) L'installation peut être effectuée avec ** pip **.

pip install adjustText

Facile à utiliser, il suffit de ** lister les textes que vous souhaitez aligner avec Adjust_text dans AdjustText **

from adjustText import adjust_text
 
fig, ax = plt.subplots()
plt.plot(x, y, 'bo')
texts = [plt.text(x[i], y[i], 'Text%s' %i, ha='center', va='center') for i in range(len(x))]
adjust_text(texts)

wiki_example_after_no_arrows.png

Il est également possible d'insérer une flèche ** telle que ** plt.annotate pour faciliter la compréhension du point de l'annotation.

fig, ax = plt.subplots()
plt.plot(x, y, 'bo')
texts = [plt.text(x[i], y[i], 'Text%s' %i, ha='center', va='center') for i in range(len(x))]
adjust_text(texts, arrowprops=dict(arrowstyle='->', color='red'))

wiki_example_after_with_arrows.png

Je vous remercie! !! !!

référence

https://github.com/Phlya/adjustText

Recommended Posts

Vous pouvez gérer les caractères qui se chevauchent avec plusieurs plt.text.
Python | Ce que vous pouvez faire avec Python
Ce que vous pouvez faire avec l'API vol.1
Ce que vous pouvez faire avec des compétences en programmation
Jusqu'à ce que vous puissiez utiliser opencv avec python
Gérez plusieurs versions de Python avec des alternatives de mise à jour (Ubuntu)
Pouvez-vous défier Kaggle avec seulement votre iPad?
Gérez l'environnement de plusieurs versions de Python avec Pythonz, virtualenv
Vous pouvez facilement créer une interface graphique même avec Python
Gérez plusieurs gestionnaires de contexte avec Python contextlib.
Vous pouvez maintenant afficher des diapositives avec nbviewer! [Jupyter]
La lecture du compteur analogique peut être effectuée avec l'exemple MNIST.
Ce que vous pouvez et ne pouvez pas faire avec Tensorflow 2.x
Jusqu'à ce que vous puissiez faire une reconnaissance d'image simple avec Jupyter