2013-02-13 1 views
67

아래 그림의 x 축을 확인하십시오. 레이블을 왼쪽으로 조금씩 움직여 각각의 틱과 정렬되도록하려면 어떻게해야합니까? 당신이 볼 수 있듯이, 회전은 텍스트 레이블의 중앙을 중심으로,회전 된 xticklabels를 각각의 xtick으로 정렬

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

을하지만 :

내가 사용하여 레이블을 회전하고 있습니다. 오른쪽으로 이동 한 것처럼 보입니다.

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

을 ...하지만 내가달라고 무엇을하지 않습니다

것은 나는이 사용하는 대신 시도했습니다. 그리고 "anchor"rotation_mode 매개 변수에 허용되는 유일한 값인 것 같습니다.

Example

답변

116

당신은, ticklabels의 수평 정렬을 설정 아래의 예를 볼 수 있습니다. 회전 된 레이블 주위에 직사각형 상자를 상상하면 직사각형의 어느 쪽을 진 점으로 정렬하고 싶습니까? 당신의 설명을 감안할 때

은, 당신이 원하는 : 하 = '권리'

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

레이블을 회전하는 것이 확실히 가능하다. 그렇게하면 텍스트의 가독성이 떨어집니다.

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) 
더 배경과 대안을

enter image description here

this post on my blog

참조 : 하나 개의 대안이 같은 코드를 사용하여 다른 라벨 위치에있다