두 하위 플롯이 생성된 후 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 axes
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)
따라서 축을 만든 후에는 축을 공유할 필요가 없습니다.
그러나 어떤 이유로든 축이 생성된 후에 축을 공유해야 하는 경우(실제로는 다음과 같이 일부 하위 플롯을 생성하는 다른 라이브러리를 사용)에도 여전히 해결책이 있을 수 있습니다.
사용.
ax1.get_shared_x_axes().join(ax1, ax2)
두 축 사이에 연결을 만듭니다.ax1
그리고.ax2
생성 시 공유와 달리 xtick 라벨은 필요한 경우 축 중 하나에 대해 수동으로 설정해야 합니다.
완전한 예:
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()
다른 답변에는 축 목록을 처리하기 위한 코드가 있습니다.
axes[0].get_shared_x_axes().join(axes[0], *axes[1:])
Matplotlib v3.3 기준으로 현재 존재합니다.Axes.sharex
,Axes.sharey
메서드:
ax1.sharex(ax2)
ax1.sharey(ax3)
위에서 말한 어네스트가 되는 것의 중요성에 추가하기 위해서입니다.
전체가 있는 경우list
Axes 객체의 경우 다음과 같이 목록의 압축을 풀면 해당 객체를 한 번에 전달하고 해당 객체의 축을 공유할 수 있습니다.
ax_list = [ax1, ax2, ... axn] #< your axes objects
ax_list[0].get_shared_x_axes().join(ax_list[0], *ax_list)
위의 내용은 모든 것을 연결합니다.물론, 당신은 창의적이고 서브셋을 할 수 있습니다.list
그들 중 일부만 연결합니다.
참고:
모든 것을 가지려면axes
함께 연결되면, 당신은 반드시 첫 번째 요소를 포함해야 합니다.axes_list
통화에서, 당신이 호출한다는 사실에도 불구하고..get_shared_x_axes()
첫 번째 요소부터!
이렇게 하면 논리적으로 보일 수 있습니다.
ax_list[0].get_shared_x_axes().join(ax_list[0], *ax_list[1:])
모든 것을 연결하는 결과를 초래할 것입니다.axes
다른 개체와 완전히 독립적으로 유지되는 첫 번째 개체를 제외한 개체를 함께 사용합니다.
기능.join
는 더 이상 사용되지 않으며 곧 제거될 예정입니다.이 기능은 계속 사용하지 않는 것이 좋습니다.
당신은 iacob이 제안한 방법을 사용할 수 있지만, Trevor Boyd Smith가 언급한 것처럼,sharex
그리고.sharey
동일한 개체에 대해 한 번만 호출할 수 있습니다.
따라서 해결책은 하나의 단일 축을 첫 번째 축과 연결해야 하는 여러 축의 호출 인수로 선택하는 것입니다. 예를 들어 축에 대해 동일한 y 척도를 설정하는 것입니다.ax1
,ax2
그리고.ax3
:
- 를 선택합니다.
ax1
다른 요청에 대한 주장으로. - 러
ax2.sharey(ax1)
,ax3.sharey(ax1)
필요한 경우 등.
언급URL : https://stackoverflow.com/questions/42973223/how-to-share-x-axes-of-two-subplots-after-they-have-been-created
'programing' 카테고리의 다른 글
Excel VBA 매크로에서 UTC의 현재 날짜 시간을 가져오는 방법 (0) | 2023.07.17 |
---|---|
numpy 배열을 통해 반복 (0) | 2023.07.17 |
드롭다운 목록 워드프레스에 상위 & 1단계 아동 범주 표시 (0) | 2023.07.12 |
PyCharm에서 환경 변수를 설정하는 방법은 무엇입니까? (0) | 2023.07.12 |
서비스 계층이 필요한 이유는 무엇입니까? (0) | 2023.07.12 |