2013-02-13 16 views
67

Aşağıdaki şeklin x eksenini kontrol edin. Etiketleri biraz sola, ilgili kenelerle hizalanacak şekilde nasıl taşıyabilirim? Gördüğünüz gibi, rotasyon metin etiketlerinin ortasında ortalanır,Döndürülmüş xticklabels'i kendi xtick'leriyle hizalama

ax.set_xticks(xlabels_positions) 
ax.set_xticklabels(xlabels, rotation=45) 

Ama:

Ben kullanarak etiket dönen ediyorum. Hangileri sağa kaydırılmış gibi görünüyor.

ax.set_xticklabels(xlabels, rotation=45, rotation_mode="anchor") 

... ama ben ne dilediğini yapmaz:

bu kullanmak yerine denedim. Ve "anchor", rotation_mode parametresi için izin verilen tek değer gibi görünüyor.

Example

cevap

116

Sen, ticklabels yatay hizalama ayarlamak için aşağıdaki örnek görebilirsiniz. Döndürülmüş etiketin etrafında dikdörtgen bir kutu hayal ederseniz, dikdörtgenin hangi tarafında kenara göre hizalanmak istersiniz? Açıklamanız Verilen

, istediğiniz: ha = 'doğru'

n=5 

x = np.arange(n) 
y = np.sin(np.linspace(-3,3,n)) 
xlabels = ['Ticklabel %i' % i for i in range(n)] 

fig, axs = plt.subplots(1,3, figsize=(12,3)) 

ha = ['right', 'center', 'left'] 

for n, ax in enumerate(axs): 
    ax.plot(x,y, 'o-') 
    ax.set_title(ha[n]) 
    ax.set_xticks(x) 
    ax.set_xticklabels(xlabels, rotation=40, ha=ha[n]) 

enter image description here

0

etiketleri Döner kesinlikle mümkündür. Bunu yapmak, metnin okunabilirliğini azaltır.

import numpy as np 
n=5 

x = np.arange(n) 
y = np.sin(np.linspace(-3,3,n)) 
xlabels = ['Long ticklabel %i' % i for i in range(n)] 


fig, ax = plt.subplots() 
ax.plot(x,y, 'o-') 
ax.set_xticks(x) 
labels = ax.set_xticklabels(xlabels) 
for i, label in enumerate(labels): 
    label.set_y(label.get_position()[1] - (i % 2) * 0.075) 
daha arka plan ve alternatifleri için

enter image description here

, this post on my blog

bkz: Bir alternatif böyle bir kod kullanarak alternatif etiket pozisyonlarına olduğunu