Wiele „poprawnych” odpowiedzi tutaj, ale dodam jeszcze jedną, ponieważ uważam, że niektóre szczegóły zostały pominięte w kilku. OP poprosił o obrót o 90 stopni, ale zmienię na 45 stopni, ponieważ kiedy użyjesz kąta, który nie jest równy zero lub 90, powinieneś również zmienić wyrównanie w poziomie; w przeciwnym razie wasze etykiety będą niecentryczne i nieco mylące (i przypuszczam, że wiele osób, które tu przychodzą, chce obrócić osie do czegoś innego niż 90).
Najłatwiejszy / najmniejszy kod
opcja 1
plt.xticks(rotation=45, ha='right')
Jak wspomniano wcześniej, może to nie być pożądane, jeśli wolisz podejście zorientowane obiektowo.
Opcja 2
Kolejny szybki sposób (przeznaczony dla obiektów daty, ale wydaje się, że działa na dowolnej etykiecie; wątpię jednak, by to było zalecane):
fig.autofmt_xdate(rotation=45)
fig
zwykle otrzymujesz od:
fig = plt.figure()
fig, ax = plt.subplots()
fig = ax.figure
Zorientowany obiektowo / Radzenie sobie bezpośrednio z ax
Opcja 3a
Jeśli masz listę etykiet:
labels = ['One', 'Two', 'Three']
ax.set_xticklabels(labels, rotation=45, ha='right')
Opcja 3b
Jeśli chcesz uzyskać listę etykiet z bieżącej działki:
# 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')
Opcja 4
Podobne do powyższego, ale zamiast tego zapętlone ręcznie.
for label in ax.get_xticklabels():
label.set_rotation(45)
label.set_ha('right')
Opcja 5
Nadal używamy pyplot
(as plt
) tutaj, ale jest on zorientowany obiektowo, ponieważ zmieniamy właściwość określonego ax
obiektu.
plt.setp(ax.get_xticklabels(), rotation=45, ha='right')
Opcja 6
Ta opcja jest prosta, ale AFAIK nie można ustawić wyrównywania etykiety w poziomie w ten sposób, więc inna opcja może być lepsza, jeśli twój kąt nie wynosi 90.
ax.tick_params(axis='x', labelrotation=45)
Edycja:
Dyskutowano na temat tego „błędu”, a potencjalna poprawka jest potencjalnie dostępna dla v3.2.0
:
https://github.com/matplotlib/matplotlib/issues/13774
ha
(wyrównanie w poziomie)