두 개의 서브 플롯 축을 공유하려고하는데 그림이 생성 된 후 x 축을 공유해야합니다. 예를 들어이 그림을 만듭니다.
import numpy as np
import matplotlib.pyplot as plt
t= np.arange(1000)/100.
x = np.sin(2*np.pi*10*t)
y = np.cos(2*np.pi*10*t)
fig=plt.figure()
ax1 = plt.subplot(211)
plt.plot(t,x)
ax2 = plt.subplot(212)
plt.plot(t,y)
# some code to share both x axis
plt.show()
주석 대신 두 x 축을 공유하는 코드를 삽입합니다. 어떻게 할 수 있을지 전혀 모르겠습니다. 몇 가지 속성이
_shared_x_axes
있고 _shared_x_axes
그림 축 ( fig.get_axes()
)을 확인할 때 연결 방법을 모르겠습니다.
답변
축을 공유하는 일반적인 방법은 생성시 공유 속성을 만드는 것입니다. 어느 한 쪽
fig=plt.figure()
ax1 = plt.subplot(211)
ax2 = plt.subplot(212, sharex = ax1)
또는
fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)
따라서 축을 만든 후 공유 할 필요가 없습니다.
그러나 어떤 이유로 든 축을 생성 한 후 공유 해야하는 경우 (실제로 here 과 같은 일부 서브 플롯을 생성하는 다른 라이브러리를 사용 하거나 삽입 된 축을 공유하는 것이 이유 일 수 있음) 여전히 해결책이 있습니다.
사용
ax1.get_shared_x_axes().join(ax1, ax2)
두 축 사이에 링크를 생성 ax1
하고 ax2
. 생성시 공유와 달리 축 중 하나에 대해 xticklabels를 수동으로 설정해야합니다 (원하는 경우).
완전한 예 :
import numpy as np
import matplotlib.pyplot as plt
t= np.arange(1000)/100.
x = np.sin(2*np.pi*10*t)
y = np.cos(2*np.pi*10*t)
fig=plt.figure()
ax1 = plt.subplot(211)
ax2 = plt.subplot(212)
ax1.plot(t,x)
ax2.plot(t,y)
ax1.get_shared_x_axes().join(ax1, ax2)
ax1.set_xticklabels([])
# ax2.autoscale() ## call autoscale if needed
plt.show()