คำตอบ "ถูกต้อง" มากมายที่นี่ แต่ฉันจะเพิ่มอีกเพราะฉันคิดว่ารายละเอียดบางอย่างออกจากหลาย ๆ OP ขอการหมุน 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
ตัวเลือก 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
(จัดเรียงแนวนอน)