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))]
** J'ai une belle bibliothèque qui peut résoudre un tel problème, donc je vais la partager **
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)
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'))
Je vous remercie! !! !!
https://github.com/Phlya/adjustText
Recommended Posts