seaborn layout 동적으로 만드는 방법 소개
2020. 4. 19. 18:04ㆍ분석 Python/Visualization
python에서는 시각화를 할 때 이쁘게 그려주는 seaborn을 많이들 사용한다.
seaborn을 사용할 때 subplot을 어떻게 주면 좋을지에 대해서 발견한 코드를 공유한다.
import seaborn as sns
import pandas as pd
titanic = pd.read_csv("./../DATA/train.csv")
titanic.head()
아래 코드에서는 컬럼을 몇 열로 할지만 정해주면 동적으로 행을 채워준다.
categorical_vars = ['Survived','Pclass','Sex','SibSp','Parch','Cabin','Embarked']
num_plots = len(categorical_vars)
total_cols = 3
total_rows = num_plots//total_cols + 1
fig, axs = plt.subplots(nrows=total_rows, ncols=total_cols,
figsize=(7*total_cols, 7*total_rows), constrained_layout=True)
for i, var in enumerate(categorical_vars):
row = i//total_cols
pos = i % total_cols
plot = sns.countplot(x=var, data=titanic,
hue = "Survived",
ax=axs[row][pos])
하지만 기존 코드에서 아쉬운 부분은 쓸모없는 부분도 layout이 표현된다.
그래서 이 부분을 동적으로 없앨 수 있는 코드를 만들어봤다.
num_plots = len(categorical_vars)
total_cols = 3
total_rows = num_plots//total_cols + 1
fig, axs = plt.subplots(nrows=total_rows, ncols=total_cols,
figsize=(7*total_cols, 7*total_rows), constrained_layout=True)
for i, var in enumerate(categorical_vars):
row = i//total_cols
pos = i % total_cols
plot = sns.countplot(x=var, data=titanic,
hue = "Survived",
ax=axs[row][pos])
if total_rows * total_cols > len(categorical_vars) :
remainder_n = total_rows * total_cols - len(categorical_vars)
for i in range(remainder_n) :
axs[row][-(i+1)].axis("off")
그러면 위의 코드랑은 달리게 표현되지 않는 부분은 없어지는 것을 확인할 수 있었다!
이번엔 layout의 총 열을 6개로 지정해봤다.
num_plots = len(categorical_vars)
total_cols = 6
total_rows = num_plots//total_cols + 1
fig, axs = plt.subplots(nrows=total_rows, ncols=total_cols,
figsize=(7*total_cols, 7*total_rows), constrained_layout=True)
for i, var in enumerate(categorical_vars):
row = i//total_cols
pos = i % total_cols
plot = sns.countplot(x=var, data=titanic,
hue = "Survived",
ax=axs[row][pos])
if total_rows * total_cols > len(categorical_vars) :
remainder_n = total_rows * total_cols - len(categorical_vars)
for i in range(remainder_n) :
axs[row][-(i+1)].axis("off")
https://towardsdatascience.com/dynamic-subplot-layout-in-seaborn-e777500c7386
728x90
'분석 Python > Visualization' 카테고리의 다른 글
sinkhorn으로 동영상 만들어보기 (0) | 2020.05.27 |
---|---|
CNN 시각화 사이트 소개 (Convolutional Neural Networks) (0) | 2020.05.03 |
subplot zip을 사용해서 쉽게 나열해서 시각화하기 (seaborn boxplot) (0) | 2020.04.08 |
Matplotlib 한글폰트 사용하는 전체 또는 개별 적용하는 방법 (0) | 2020.04.03 |
subplotting을 위한 plot 함수 만들어서 코드 간단하게 하기 (0) | 2020.03.29 |