2014-01-10 3 views
0

matplotlib에 두 개의 x 축을 가진 그래프를 플롯하려고합니다. 그러나, 내가matplotlib에서 x 축 2 개가 작동하지 않습니다.

import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure() 
ax1 = fig.add_subplot(111) 
x = np.linspace(-10,10,1000) 
y = np.sin(x*np.pi/2) 
ax1.plot(x,y) 

ax2 = ax1.twiny() 
tick_locations = ax1.get_xticks() - 5. 
tick_labels = ax1.get_xticks() 

ax2.set_xticks(tick_locations[1:]) 
ax2.set_xticklabels(tick_labels[1:]) 

plt.show() 

에 기대하는 방법으로 행동하지 것은 제공 :

enter image description here

는 AX2 라벨 읽기 안 : [ -5. 0. 5. 10.] AX1 위치에서 [-10. -5. 0. 5.]

어떤 아이디어가 왜 그들을 기지개합니까?

답변

0

편집 코드 :

ax2.set_xticks(tick_locations[:]) 
ax2.set_xticklabels(tick_labels[1:]) 

편집 : "을 바탕으로 당신이 어떤 눈금 위치를 선택 할 수 있어야한다 보인다 this 게시물에 대한 칼라 가마의 반응?"

하기이 작업을 수행 할 수 있도록, 자신의 코드에 ax2.set_xlim이 있음을

참고 :

ax2.set_xlim(tick_locations[0], tick_locations[-1]) 
ax2.set_xticks(tick_locations[1:]) #1, not 0 
ax2.set_xticklabels(tick_labels[1:]) 

나는 키가 당신이 AX1로 xlim 동일한 범위 당신의 AX2을하도록해야 생각합니다.

+0

[이 게시물에 대한] Carla gama의 답변 (http://stackoverflow.com/questions/10514315/how-to-add-a-second-x-axis-in-matplotlib)을 기반으로 할 수있는 것으로 보입니다. 틱 위치를 선택 하시겠습니까? – Ben

+0

@Ben 대답 업데이트 됨, set_xlim 사용 – zhangxaochen

+0

'set_xticks' 다음에'set_xlim'이 필요합니다. 다른 현명한'set_xticks'는 한계를 다시 정의합니다. 하지만 네 말이 맞아, 그게 문제 야. – Ben

관련 문제