Burada birçok "doğru" yanıt var, ancak bazı ayrıntıların birkaçının dışında kaldığını düşündüğüm için bir tane daha ekleyeceğim. OP 90 derece dönüş istedi ancak 45 dereceye döneceğim çünkü sıfır veya 90 olmayan bir açı kullandığınızda yatay hizalamayı da değiştirmelisiniz; aksi takdirde etiketleriniz merkez dışında ve biraz yanıltıcı olacaktır (ve buraya gelen birçok insanın eksenleri 90'dan başka bir şeye döndürmek istediğini tahmin ediyorum).
En Kolay / En Az Kod
seçenek 1
plt.xticks(rotation=45, ha='right')
Daha önce de belirtildiği gibi, Nesneye Dayalı yaklaşımı tercih ederseniz bu istenmeyebilir.
seçenek 2
Başka bir hızlı yol (tarih nesneleri için tasarlanmıştır, ancak herhangi bir etiket üzerinde çalışıyor gibi görünüyor; bunun için önerilen şüphe var):
fig.autofmt_xdate(rotation=45)
fig
genellikle aşağıdakilerden alırsınız:
fig = plt.figure()
fig, ax = plt.subplots()
fig = ax.figure
Nesneye Yönelik / Doğrudan ax
Seçenek 3a
Etiket listeniz varsa:
labels = ['One', 'Two', 'Three']
ax.set_xticklabels(labels, rotation=45, ha='right')
Seçenek 3b
Geçerli grafikten etiket listesini almak istiyorsanız:
# 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')
Seçenek 4
Yukarıdakine benzer, ancak bunun yerine manuel olarak döngü yapın.
for label in ax.get_xticklabels():
label.set_rotation(45)
label.set_ha('right')
Seçenek 5
Burada hala pyplot
(as plt
) kullanıyoruz ancak nesne yönelimli çünkü belirli bir ax
nesnenin özelliğini değiştiriyoruz .
plt.setp(ax.get_xticklabels(), rotation=45, ha='right')
Seçenek 6
Bu seçenek basittir, ancak AFAIK, etiket yatay hizalamasını bu şekilde ayarlayamazsınız, böylece açınız 90 değilse başka bir seçenek daha iyi olabilir.
ax.tick_params(axis='x', labelrotation=45)
Düzenleme:
Bu tam "hata" ile ilgili bir tartışma var ve bir düzeltme potansiyel olarak aşağıdakiler için planlanmıştır v3.2.0
:
https://github.com/matplotlib/matplotlib/issues/13774
ha