Nhiều câu trả lời "chính xác" ở đây nhưng tôi sẽ thêm một câu nữa vì tôi nghĩ một số chi tiết bị bỏ sót. OP yêu cầu xoay 90 độ nhưng tôi sẽ thay đổi thành 45 độ vì khi bạn sử dụng góc không bằng 0 hoặc 90, bạn cũng nên thay đổi căn chỉnh ngang; nếu không, nhãn của bạn sẽ lệch tâm và hơi sai lệch (và tôi đoán nhiều người đến đây muốn xoay trục sang thứ gì đó ngoài 90).
Mã dễ nhất / ít nhất
lựa chọn 1
plt.xticks(rotation=45, ha='right')
Như đã đề cập trước đây, điều đó có thể không được mong muốn nếu bạn muốn thực hiện phương pháp Hướng đối tượng.
Lựa chọn 2
Một cách nhanh khác (nó dành cho các đối tượng ngày nhưng dường như hoạt động trên bất kỳ nhãn nào; nghi ngờ điều này được khuyến nghị mặc dù):
fig.autofmt_xdate(rotation=45)
fig
bạn thường sẽ nhận được từ:
fig = plt.figure()
fig, ax = plt.subplots()
fig = ax.figure
Hướng đối tượng / Xử lý trực tiếp với ax
Lựa chọn 3a
Nếu bạn có danh sách các nhãn:
labels = ['One', 'Two', 'Three']
ax.set_xticklabels(labels, rotation=45, ha='right')
Tùy chọn 3b
Nếu bạn muốn lấy danh sách các nhãn từ lô hiện tại:
# 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')
Lựa chọn 4
Tương tự như trên, nhưng lặp qua thủ công thay thế.
for label in ax.get_xticklabels():
label.set_rotation(45)
label.set_ha('right')
Lựa chọn 5
Chúng tôi vẫn sử dụng pyplot
(như plt
) ở đây nhưng nó hướng đối tượng vì chúng tôi đang thay đổi thuộc tính của một ax
đối tượng cụ thể .
plt.setp(ax.get_xticklabels(), rotation=45, ha='right')
Lựa chọn 6
Tùy chọn này đơn giản, nhưng AFAIK bạn không thể đặt nhãn theo chiều ngang theo cách này để tùy chọn khác có thể tốt hơn nếu góc của bạn không 90.
ax.tick_params(axis='x', labelrotation=45)
Chỉnh sửa:
Có thảo luận về "lỗi" chính xác này và bản sửa lỗi có khả năng được dự kiến cho v3.2.0
:
https://github.com/matplotlib/matplotlib/issues/13774
ha
(căn chỉnh theo chiều ngang)