Python에서 공유 축이있는 GridSpec
다른 스레드에 대한 이 솔루션gridspec.GridSpec
은 plt.subplots
. 그러나 서브 플롯간에 축을 공유 할 때 일반적으로 다음과 같은 구문을 사용합니다.
fig, axes = plt.subplots(N, 1, sharex='col', sharey=True, figsize=(3,18))
어떻게 지정할 수 있습니다 sharex
와 sharey
내가 사용하는 경우 GridSpec
?
우선, 약간 부정확해도 괜찮다면 원래 문제에 대한 더 쉬운 해결 방법이 있습니다. 다음을 호출 한 후 서브 플롯의 상위 범위를 기본값으로 재설정하십시오 tight_layout
.
fig, axes = plt.subplots(ncols=2, sharey=True)
plt.setp(axes, title='Test')
fig.suptitle('An overall title', size=20)
fig.tight_layout()
fig.subplots_adjust(top=0.9)
plt.show()
그러나 질문에 답하려면 gridspec을 사용하기 위해 약간 더 낮은 수준에서 서브 플롯을 만들어야합니다. 공유 축의 숨김을 복제 subplots
하려면 sharey
인수를 사용하고으로 Figure.add_subplot
중복 된 틱을 숨기는 방식 으로 수동으로 수행해야합니다 plt.setp(ax.get_yticklabels(), visible=False)
.
예로서:
import matplotlib.pyplot as plt
from matplotlib import gridspec
fig = plt.figure()
gs = gridspec.GridSpec(1,2)
ax1 = fig.add_subplot(gs[0])
ax2 = fig.add_subplot(gs[1], sharey=ax1)
plt.setp(ax2.get_yticklabels(), visible=False)
plt.setp([ax1, ax2], title='Test')
fig.suptitle('An overall title', size=20)
gs.tight_layout(fig, rect=[0, 0, 1, 0.97])
plt.show()
Joe의 선택은 나에게 몇 가지 문제를 안겨주었습니다. 전자는 figure.tight_layout
대신 직접 사용 figure.set_tight_layout()
하고 후자는 일부 백엔드 ( UserWarning : tight_layout : fall back to Agg renderer )와 관련된 문제였습니다. 그러나 Joe의 대답은 또 다른 소형 대안을 향한 내 길을 분명히 보여주었습니다. 이것은 OP에 가까운 문제에 대한 결과입니다.
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, ncols=1, sharex='col', sharey=True,
gridspec_kw={'height_ratios': [2, 1]},
figsize=(4, 7))
fig.set_tight_layout({'rect': [0, 0, 1, 0.95], 'pad': 1.5, 'h_pad': 1.5})
plt.setp(axes, title='Test')
fig.suptitle('An overall title', size=20)
plt.show()
참조 URL : https://stackoverflow.com/questions/22511550/gridspec-with-shared-axes-in-python
'Programing' 카테고리의 다른 글
int main ()과 int main (void)의 차이점은 무엇입니까? (0) | 2021.01.08 |
---|---|
$ resource에 전달 된 @id는 무엇입니까? (0) | 2021.01.08 |
Docker가 다른 Linux 배포판을 실행할 수있는 이유는 무엇입니까? (0) | 2021.01.08 |
Kubernetes에서 복제 컨트롤러 VS 배포 (0) | 2021.01.08 |
“autofillHints 속성 누락” (0) | 2021.01.07 |