여기에 많은 "올바른"답변이 있지만 몇 가지 세부 사항이 몇 가지로 남아 있다고 생각하므로 하나 더 추가하겠습니다. OP는 90도 회전을 요청했지만 0 또는 90이 아닌 각도를 사용할 때 수평 정렬도 변경해야하기 때문에 45 도로 변경합니다. 그렇지 않으면 라벨이 중심을 벗어나고 약간 오도 될 것입니다 (그리고 여기에 오는 많은 사람들이 축을 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
옵션 3a
라벨 목록이있는 경우 :
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/issues/13774
ha