Beaucoup de réponses "correctes" ici mais je vais en ajouter une autre car je pense que certains détails sont oubliés dans plusieurs d'entre elles. L'OP a demandé une rotation de 90 degrés mais je vais changer pour 45 degrés parce que lorsque vous utilisez un angle qui n'est pas zéro ou 90, vous devez également changer 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 tourner les axes à autre chose que 90).
Code le plus facile / le moins facile
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
Une autre méthode rapide (elle est destinée aux objets de type date mais semble fonctionner sur n'importe quelle étiquette ; je doute cependant que ce soit recommandé) :
fig.autofmt_xdate(rotation=45)
fig
que vous obtenez habituellement :
fig = plt.gcf()
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 voulez 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
Semblable à la méthode ci-dessus, mais avec une boucle manuelle à la place.
for label in ax.get_xticklabels():
label.set_rotation(45)
label.set_ha('right')
Option 5
Nous utilisons toujours pyplot
(comme plt
) ici, mais c'est orienté objet car nous changeons la propriété d'un objet spécifique. ax
objet.
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, donc une autre option pourrait être meilleure si votre angle n'est pas de 90.
ax.tick_params(axis='x', labelrotation=45)
Edita: Ce "bug" a fait l'objet d'une discussion, mais aucun correctif n'a été publié (à ce jour). 3.4.0
) : https://github.com/matplotlib/matplotlib/issues/13774