J'ai une figure créée dans matplotlib (données de séries chronologiques) sur laquelle sont une série de
matplotlib.pyplot.axvline
lignes. Je voudrais créer des étiquettes sur l'intrigue qui apparaissent à proximité (probablement sur la RHS de la ligne et vers le haut de la figure) de ces lignes verticales.
Vous pouvez utiliser quelque chose comme
plt.axvline(10)
plt.text(10.1,0,'blah',rotation=90)
vous devrez peut-être jouer avec les valeurs x et y dans text
pour l'aligner correctement. Vous pouvez trouver la documentation plus complète ici .
Une solution sans placement manuel consiste à utiliser des "transformations mixtes".
Transformations transformer les coordonnées d'un système de coordonnées à un autre. En spécifiant une transformation via le paramètre transform
de text
, vous pouvez donner les coordonnées x
et y
du texte dans le système de coordonnées de l'axe (allant de 0 à 1 de gauche à droite/de haut en bas des axes x/y, respectivement). Avec transformations mixtes , vous pouvez utiliser un système de coordonnées mixtes.
C'est exactement ce dont vous avez besoin: vous avez la coordonnée x donnée par les données et vous voulez placer le texte sur les axes y quelque part par rapport à l'axe, disons au centre. Le code pour ce faire ressemble à ceci:
import matplotlib.transforms as transforms
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# the x coords of this transformation are data, and the
# y coord are axes
trans = transforms.blended_transform_factory(
ax.transData, ax.transAxes)
x = 10
ax.axvline(x)
plt.text(x, .5, 'hello', transform=trans)
plt.show()