Тут є багато "правильних" відповідей, але я додам ще один, оскільки думаю, що деякі деталі залишилися без кількох. ОП попросив обертання на 90 градусів, але я зміню на 45 градусів, тому що, коли ви використовуєте кут, який не дорівнює нулю або 90, ви також повинні змінити горизонтальне вирівнювання; інакше ваші ярлики будуть нецентральними і трохи оманливими (і я здогадуюсь, що багато людей, які приїжджають сюди, хочуть повернути осі на щось, крім 90).
Найпростіший / найменший код
Варіант 1
plt.xticks(rotation=45, ha='right')
Як було сказано раніше, це може бути небажаним, якщо ви краще скористаєтесь об'єктно-орієнтованим підходом.
Варіант 2
Ще один швидкий спосіб (він призначений для об’єктів дати, але, здається, працює над будь-якою міткою; хоча б сумніватися в цьому рекомендується):
fig.autofmt_xdate(rotation=45)
fig
Ви зазвичай отримуєте:
fig = plt.figure()
fig, ax = plt.subplots()
fig = ax.figure
Об'єктно-орієнтована / безпосередньо стосується ax
Варіант 3а
Якщо у вас є список міток:
labels = ['One', 'Two', 'Three']
ax.set_xticklabels(labels, rotation=45, ha='right')
Варіант 3b
Якщо ви хочете отримати список міток з поточного сюжету:
# 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')
Варіант 4
Подібно до вище, але замість цього перебирайте вручну.
for label in ax.get_xticklabels():
label.set_rotation(45)
label.set_ha('right')
Варіант 5
Тут ми все ще використовуємо pyplot
(як plt
), але це орієнтоване на об'єкти, оскільки ми змінюємо властивість конкретного ax
об'єкта.
plt.setp(ax.get_xticklabels(), rotation=45, ha='right')
Варіант 6
Цей варіант простий, але AFAIK ви не можете встановити горизонтальне вирівнювання мітки таким чином, щоб інший варіант міг бути кращим, якщо ваш кут не дорівнює 90.
ax.tick_params(axis='x', labelrotation=45)
Редагувати:
Існує дискусія про цю точну "помилку", і виправлення потенційно призначене для v3.2.0
:
https://github.com/matplotlib/matplotlib/isissue/13774
ha
(горизонтальне вирівнювання)