데이터/Plotting

[1] Seaborn & matplotlib : 마법의 3줄

Cho et al. 2022. 5. 16.

Rationale

 

파이썬으로 그림을 그리다 보면, 주로 seaborn, pyplot 을 쓰게 되는데, 

뭔가 그림을 조율하고 나면 한번씩 깔끔하지 못하게 보이는 느낌이 있다. 

 

특히 리포트가 나가야 하는 그림일 때, 특히 그 간결성이 강조된다고 생각하는데, 그럴 때 쓸 수 있는 몇가지 트릭이 있다. 

내가 쓰는 트릭 중 하나를 소개한다.

 

<3줄> 만 추가하면 그림이 조금 깔끔해 지는 코드이다.

 

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

 

Seaborn, pyplot 을 이용한 plotting 을 할 때, 나의 그림을 가장 깔끔하게 해주는 마법의 3줄.

plt.tight_layout() # Subplotting 을 할 때 그림이 겹치지 않게 함, 공간 확보
sns.despine() # Grid 의 위쪽, 오른쪽 선을 없에줌.
sns.set(font_scale = 2, style = 'white') # 배경을 흰 색으로, Font 는 scale 따라 자동 조절.

 

Seaborn histplot 을 예로 들어서 적용시켜보자.

rand1 = np.random.normal(size=100)
rand2 = np.random.normal(size=100)

우선 그림그릴 데이터셋을 준비해주고,

 

사용하지 않은 상태에서 그림을 그려 보면

 

적용 전

_,axes = plt.subplots(1,2,figsize = (15,8))
sns.set(font_scale = 2)
sns.histplot(rand1,ax=axes[0])
sns.histplot(rand2,ax=axes[1])

이렇게 나온다.

 

현재 배경도 default 인 grid 로 되어있고, 글자도 두개 plot 에 겹치는 것으로 보이는데, 

이를 더 깔끔하게 해보자. 

 

적용 후 

_,axes = plt.subplots(1,2,figsize = (15,8))

### 3줄 추가 ###
plt.tight_layout() # Subplotting 을 할 때 그림이 겹치지 않게 함, 공간 확보
sns.set(font_scale = 2, style = 'white') # 배경을 흰 색으로, Font 는 scale 따라 자동 조절.
sns.despine() # Grid 의 위쪽, 오른쪽 선을 없에줌.

sns.histplot(rand1,ax=axes[0])
sns.histplot(rand2,ax=axes[1])

plt.tight_layout() 으로 두 subplot 간 간격이 일정해지고 서로 부딛히지 않음을 볼 수 있고, 

sns.set(style = 'white') 로 배경이 하얀 색으로 바뀌었음을, 

sns.despine() 으로 우측 테두리가 수정되었음을 볼 수 있다. 

 

 

댓글