인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

combi_jihoon님의 프로필 이미지
combi_jihoon

작성한 질문수

캐글 Advanced 머신러닝 실전 박치기

application 데이터 세트 기본 분석과 시각화 - 02

Squeeze=False를 사용하는 이유

작성

·

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로 정한 것입니다.

감사합니다.


combi_jihoon님의 프로필 이미지
combi_jihoon
질문자

넵 알겠습니다. 감사합니다!!

combi_jihoon님의 프로필 이미지
combi_jihoon

작성한 질문수

질문하기