Seaborn 시각화(2)
막대그래프
다음으로 막대그래프에 대해 알아볼 것이다. 막대그래프에 텍스트를 추가하는 작업을 진행할 것이다. 기본 그래프는 빈도 그래프인 countplot()을 활용하면 구현하기 쉽다.
sns.countplot(x = 'day', data = tips)
plt.show()
요일별로 정렬되어 있어 좋지만 오름차순 또는 내림차순으로 정렬을 할 수도 있다. 이때는 Pandas 문법인 value_counts()를 활용하면 된다.
sns.countplot(x = 'day', data = tips, order = tips['day'].value_counts().index)
plt.show()
이에 더해 각각의 막대에 숫자를 표시할 것이다. 이때는 반복문을 사용하면 구현하기 쉽다.
ax = sns.countplot(x = 'day', data = tips,
order = tips['day'].value_counts().index)
for p in ax.patches:
height = p.get_height()
ax.text(p.get_x() + p.get_width() / 2., height + 3, height, ha = 'center', size = 9)
ax.set_ylim(-5, 100)
plt.show()
다음으로는 Hue 옵션을 추가해 그룹 간 비교를 하는 그래프를 작성할 것이다.
ax = sns.countplot(x = 'day', data = tips, hue = 'sex', dodge = True,
order = tips['day'].value_counts().index)
for p in ax.patches:
height = p.get_height()
ax.text(p.get_x() + p.get_width() / 2., height + 3, height, ha = 'center', size = 9)
ax.set_ylim(-5, 100)
plt.show()
Hue 옵션에서 성별을 의미하는 'Sex' 칼럼만 추가했을 뿐인데 더 많은 정보를 알 수 있다.
상관관계 히트맵
두 개 이상의 변수 간 상호 관련성을 판단하도록 상관관계 분석 및 시각화를 진행할 것이다.
상관관계 분석의 종류는 변수의 특성 및 표본의 개수에 따라 여러 갈래로 나뉜다.
여기서는 수치형 변수로 이뤄진 두 변수 간 연관성을 파악하도록 시각화만 작성할 것이다.
데이터는 자동차 연비와 관련된 데이터 세트인 Mpg 데이터셋을 사용할 것이다.
import numpy as np
mpg = sns.load_dataset('mpg')
print(mpg.shape)
num_mpg = mpg.select_dtypes(include = np.number)
print(num_mpg.shape)
총 변수는 9개이다. 하지만 select_dtypes() 함수를 이용해 변수를 수치형 변수만 추출했다.
num_mpg.info()
결과를 보면 수치형 데이터 타입인 int64, float64만 추출된 것을 확인할 수 있다.
이제 corr() 함수를 사용해 상관 계수를 구한 뒤 Seaborn 라이브러리의 히트 맵 그래프 입력값으로 넣으면 그래프를 작성할 수 있다.
num_mpg.corr()
이제 결과값을 기반으로 히트 맵 그래프를 작성해보자. 숫자가 없는 히트맵은 왼쪽, 숫자가 있는 히트맵은 오른쪽에 배치할 것이다.
fig, ax = plt.subplots(nrows = 1, ncols = 2, figsize = (16, 5))
sns.heatmap(num_mpg.corr(), ax = ax[0])
ax[0].set_title('Basic Correlation Heatmap', pad = 12)
sns.heatmap(num_mpg.corr(), vmin = -1, vmax = 1, annot = True, ax = ax[1])
ax[1].set_title('Correlation Heatmap with Number', pad = 12)
plt.show()
vmin, vmax는 각각 최솟값, 최댓값을 의미하며, annot은 각 Cell의 값 표기 유무를 표기한다.
좀 더 가독성이 좋은 그래프를 작성하기 위해 계단식 그래프로 바꿀 것이다.
이때는 heatmap()에 mask 파라미터를 사용해 입력값을 추가하면 된다.
True 값만 heatmap 형태로 추가하면 True 값에 해당하는 Cell만 사라진다.
fig, ax = plt.subplots(figsize = (16, 5))
ax = sns.heatmap(num_mpg.corr(), mask = mask,
vmin = -1, vmax = 1,
annot = True,
cmap = 'BrBG', cbar = True)
ax.set_title('Triangle Correlation Heatmap', pad = 16, size = 16)
fig.show()
처음 작성한 히트 맵보다 더 가독성이 높아진 것을 확인할 수 있다. 동일한 시각화도 각각의 인수를 추가하면서 더욱더 간결하지만 가독성 높은 그래프를 구현할 수 있다.
'파이썬 시각화' 카테고리의 다른 글
Seaborn 시각화(1) (0) | 2021.09.28 |
---|---|
Matplotlib 시각화(2) (0) | 2021.09.28 |
Matplotlib 시각화(1) (0) | 2021.09.27 |