Python 데이터 시각화 기초

matplotlib와 seaborn을 이용한 데이터 시각화 기초를 알아봅시다.

12
수강중

5. 여러 개의 그래프 그리기

동영상이 없는 텍스트 강의 자료입니다.

그리드

그리드를 이용하면 범주형 변수로 그래프를 나눠서 그릴 수 있습니다.

import seaborn as sns
df = sns.load_dataset('tips')
df.head()
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4

다음은 time에 따라 그래프를 행으로 나눠 그리고, 각 그래프는 가로축은 total_bill, 세로축은 tip인 산점도(scatterplot)을 그리는 예입니다.

grid = sns.FacetGrid(data=df, row='time')
grid.map(sns.scatterplot, "total_bill", "tip")
<seaborn.axisgrid.FacetGrid at 0x133158d4978>

다음은 day에 따라 그래프를 열로 나눠 그리고, 각 그래프는 가로축은 time, 세로축은 tipstripplot을 그리는 예입니다.

grid = sns.FacetGrid(data=df, col='day')
grid.map(sns.stripplot, "time", "tip")
<seaborn.axisgrid.FacetGrid at 0x1331577feb8>

row_order로 행의 순서를, col_order로 열의 순서를 지정할 수 있습니다.

grid = sns.FacetGrid(data=df, col='smoker', col_order=['No', 'Yes'])
grid.map(sns.scatterplot, "total_bill", "tip")
<seaborn.axisgrid.FacetGrid at 0x13315aefa20>

2개의 그래프를 하나의 그림에 그리기

직접 관련이 없는 2개 그래프를 하나의 그림에 그리려면 matplotlibsubplots를 사용하면 됩니다.

import matplotlib.pyplot as plt

subplots로 먼저 2개의 그래프가 들어갈 자리를 확보합니다.

fig, ax = plt.subplots(ncols=2)

왼쪽 그래프 ax[0]에는 total_billtip의 산점도를 그립니다.

sns.scatterplot("total_bill", "tip", data=df, ax=ax[0])
fig

오른쪽 그래프 ax[1]에는 sizetipstripplot을 그립니다.

sns.stripplot("size", "tip", data=df, ax=ax[1])
fig

실제로 할 때는 이렇게 한 번에 그리면 됩니다.

fig, ax = plt.subplots(ncols=2)
sns.scatterplot("total_bill", "tip", data=df, ax=ax[0])
sns.stripplot("size", "tip", data=df, ax=ax[1])
<matplotlib.axes._subplots.AxesSubplot at 0x13316ff1f60>

내용의 난이도는 적절한가요?

공부나 업무에 도움이 되는 내용인가요?