Beaucoup de réponses «correctes» ici, mais j'en ajouterai une de plus car je pense que certains détails sont laissés de côté. L'OP a demandé une rotation de 90 degrés, mais je vais passer à 45 degrés car lorsque vous utilisez un angle qui n'est pas nul ou 90, vous devez également modifier l'alignement horizontal; sinon vos étiquettes seront décentrées et un peu trompeuses (et je suppose que beaucoup de gens qui viennent ici veulent faire pivoter les axes vers autre chose que 90).
Code le plus facile / le moins
Option 1
plt.xticks(rotation=45, ha='right')
Comme mentionné précédemment, cela peut ne pas être souhaitable si vous préférez adopter l'approche orientée objet.
Option 2
Un autre moyen rapide (il est destiné aux objets de date mais semble fonctionner sur n'importe quelle étiquette; doute que cela soit recommandé cependant):
fig.autofmt_xdate(rotation=45)
fig
vous obtiendrez généralement de:
fig = plt.figure()
fig, ax = plt.subplots()
fig = ax.figure
Orienté objet / Traiter directement avec ax
Option 3a
Si vous avez la liste des étiquettes:
labels = ['One', 'Two', 'Three']
ax.set_xticklabels(labels, rotation=45, ha='right')
Option 3b
Si vous souhaitez obtenir la liste des étiquettes du tracé actuel:
# Unfortunately you need to draw your figure first to assign the labels,
# otherwise get_xticklabels() will return empty strings.
plt.draw()
ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha='right')
Option 4
Similaire à ci-dessus, mais parcourez manuellement à la place.
for label in ax.get_xticklabels():
label.set_rotation(45)
label.set_ha('right')
Option 5
Nous utilisons toujours pyplot
(as plt
) ici, mais il est orienté objet car nous modifions la propriété d'un ax
objet spécifique .
plt.setp(ax.get_xticklabels(), rotation=45, ha='right')
Option 6
Cette option est simple, mais AFAIK vous ne pouvez pas définir l'alignement horizontal de l'étiquette de cette façon, une autre option pourrait donc être meilleure si votre angle n'est pas de 90.
ax.tick_params(axis='x', labelrotation=45)
Edit: il
y a une discussion sur ce "bug" exact et un correctif est potentiellement prévu pour v3.2.0
:
https://github.com/matplotlib/matplotlib/issues/13774
ha
(alignement horizontal)