Es gibt hier viele "richtige" Antworten, aber ich füge noch eine hinzu, da ich denke, dass einige Details in einigen Fällen ausgelassen wurden. Der OP fragte nach einer 90-Grad-Drehung, aber ich ändere das in 45 Grad, denn wenn Sie einen Winkel verwenden, der nicht Null oder 90 ist, sollten Sie auch die horizontale Ausrichtung ändern; andernfalls werden Ihre Beschriftungen dezentriert und ein wenig irreführend sein (und ich vermute, dass viele Leute, die hierher kommen, Achsen auf etwas anderes als 90 drehen wollen).
Einfachster/geringster Code
Option 1
plt.xticks(rotation=45, ha='right')
Wie bereits erwähnt, ist das vielleicht nicht wünschenswert, wenn Sie lieber den objektorientierten Ansatz wählen.
Option 2
Ein anderer schneller Weg (er ist für Datumsobjekte gedacht, scheint aber bei jedem Etikett zu funktionieren; ich bezweifle allerdings, dass dies empfohlen wird):
fig.autofmt_xdate(rotation=45)
fig
die Sie normalerweise bekommen würden:
fig = plt.gcf()
fig = plt.figure()
fig, ax = plt.subplots()
fig = ax.figure
Objektorientiert / Direkter Umgang mit ax
Option 3a
Wenn Sie die Liste der Etiketten haben:
labels = ['One', 'Two', 'Three']
ax.set_xticks([1, 2, 3])
ax.set_xticklabels(labels, rotation=45, ha='right')
In späteren Versionen von Matplotlib (3.5+) können Sie einfach set_xticks
allein:
ax.set_xticks([1, 2, 3], labels, rotation=45, ha='right')
Option 3b
Wenn Sie die Liste der Beschriftungen des aktuellen Plots abrufen möchten:
# Unfortunately you need to draw your figure first to assign the labels,
# otherwise get_xticklabels() will return empty strings.
plt.draw()
ax.set_xticks(ax.get_xticks())
ax.set_xticklabels(ax.get_xticklabels(), rotation=45, ha='right')
Wie oben, in späteren Versionen von Matplotlib (3.5+), können Sie einfach verwenden set_xticks
allein:
ax.set_xticks(ax.get_xticks(), ax.get_xticklabels(), rotation=45, ha='right')
Option 4
Ähnlich wie oben, aber stattdessen manuell durchlaufen.
for label in ax.get_xticklabels():
label.set_rotation(45)
label.set_ha('right')
Option 5
Wir verwenden immer noch pyplot
(als plt
), aber es ist objektorientiert, weil wir die Eigenschaft eines bestimmten ax
Objekt.
plt.setp(ax.get_xticklabels(), rotation=45, ha='right')
Option 6
Diese Option ist einfach, aber AFAIK können Sie nicht festlegen, Etikett horizontal ausrichten auf diese Weise so eine andere Option könnte besser sein, wenn Ihr Winkel ist nicht 90.
ax.tick_params(axis='x', labelrotation=45)
Bearbeiten: Es gibt Diskussionen über genau diesen "Fehler", aber eine Lösung wurde noch nicht veröffentlicht (Stand 3.4.0
): https://github.com/matplotlib/matplotlib/issues/13774