code

두 개의 서브 플롯이 생성 된 후 x 축을 어떻게 공유합니까?

codestyles 2020. 12. 5. 09:48
반응형

두 개의 서브 플롯이 생성 된 후 x 축을 어떻게 공유합니까?


두 개의 서브 플롯 축을 공유하려고하는데 그림이 생성 된 후 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()

참고 URL : https://stackoverflow.com/questions/42973223/how-share-x-axis-of-two-subplots-after-they-are-created

반응형