작성
·
958
1
안녕하세요, 혹시 subplots 생성시 squeeze=False를 사용하는 이유가 무엇인지 알 수 있을까요? 감사합니다.
답변 1
1
안녕하십니까,
다른 이유가 있어서는 아니고 plt.subplots() 호출하면 Axis 객체가 반환되는데 이 Axis 객체가 2개의 원소를 가지는 Array 형태로 반환됩니다. 그런데 이게 nrows가 1, ncols가 2 로 해서 subplots()을 호출하다보니가 2개의 원소를 (1, 2)와 같은 2차원 형태로 반환할지, (2, )와 같은 1차원 형태로 반환할지를 squeeze가 결정합니다. squeeze가 True(Default 입니다) 이며 2차원(1, 2)를 압축(squeeze)해서 (2,)로 합니다.
그런데 이렇게 하다보면
sns.violinplot(x='TARGET', y=column, data=df, ax=axs[0][0] )
에서 axs[0][0] 형태로(즉 2차원 형태로) 지정할 수 없습니다. axs[0] 형태로 지정해야 합니다. 그래서 예제 코드의 통일성을 위해 2차원 형태로 axs를 반환할 수 있도록 squeeze를 False로 설정한 것입니다.
그리고 squeeze = True로 설정하고 axs[0][0] 을 axs[0], axs[0][1]을 axs[1]로 설정만 violinplot 그릴때 문제가 발생해서(원인을 잘 모르겠습니다) 2차원 형태로 axs를 지정하기 위해서 squeeze=False로 정한 것입니다.
감사합니다.
넵 알겠습니다. 감사합니다!!