원래 X 축 틱과 동일한 위치 (틱 레이블은 다를 수 있음)의 틱이있는 상단 X 축을 갖고 싶습니다. 그것은 할 수있을만큼 쉬운 것 같다, 그러나 나는 아래의 코드가 작동하지 않는 이유는 확실하지 않다 :Matplotlib이 추가 축의 잘못된 위치에 표시됩니다.
출력은 다음과 같습니다import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
X = np.linspace(11,80,1000)
Y = 2*np.sin(X)*np.exp(-X/20.)
ax1.plot(X,Y)
ax2 = ax1.twiny()
old_ticks = ax1.get_xticks()
ax2.set_xticks(old_ticks)
plt.show()
: 명확하게, 상단 축에 진드기가의 동일한 위치에 있지 아래쪽 틱 (즉, 위쪽 축에는 7 개 틱이 있고 아래쪽은 6 개 틱)입니다.
왜 이렇게됩니까?
편집 : (아래 제안) xlim 설정은 초기 음모에 작동하지만, 하나가 다른 지역으로 확대하지 않을 때. 확대/축소시에 ax1
에있는 것과 동일한 위치에 ax2
의 틱을 추가했지만이 기능이 작동하지 않는 것처럼 콜백 함수를 추가했습니다.
또한 twiny
을 사용하는 이유는 결국 ax2
의 표시된 틱 값이 ax1
틱 값에 비선형 방식으로 의존하기 때문입니다. 진드기가 축의 같은 위치에 있도록하고 싶습니다. 수입 NumPy와 PLT로 NP 수입 matplotlib.pyplot로
fig = plt.figure()
ax1 = fig.add_subplot(111)
X = np.linspace(11,80,1000)
Y = 2*np.sin(X)*np.exp(-X/20.)
ax1.plot(X,Y)
ax2 = ax1.twiny()
ax2.set_xlim(ax1.get_xlim())
ax2.set_xticks(ax1.get_xticks())
def on_xlim_changed(ax1):
ax2.set_xlim(ax1.get_xlim())
ax2.set_xticks(ax1.get_xticks())
ax1.callbacks.connect('xlim_changed',on_xlim_changed)
plt.show()
이것은 처음에는 플롯을 표시 할 때만 작동하지만 플롯에서 다른 영역으로 확대 할 때는 작동하지 않는 것처럼 보입니다. 내가'twiny '를 사용하고자하는 이유는 똑같은 위치 (아래 축처럼)에 진드기가 있기를 원하기 때문입니다. 그러나 진드기 라벨은 다를 것입니다. 위의 "확장"설명을 포함하도록 위의 질문을 편집했습니다. –