Python 시각화 기초

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


수강중

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>