지난 포스팅에서는 숫자형 - 숫자형 자료 사이의 관계 혹은 숫자형 - 범주형 자료 사이의 관계를 살피기 좋은 버블 차트를 파이썬 matplotlib에서 그리는 방법을 살펴보았습니다.
이번에는 범주형 - 범주형 자료 사이의 관계를 요약하여 보기 좋은 히트맵을 그리는 방법에 대해서 간단히 다루어보도록 하겠습니다.
여기서도 지난 글과 마찬가지로 캐글의 자전거 대여 수요 학습 데이터 셋을 사용하되, 이번에는 시간대와 계절 두 가지 범주를 가지고 그룹화를 진행하여 각 범주의 평균 자전거 대여 수를 대상으로 히트맵을 그려보도록 하겠습니다.
파이썬 히트맵 시각화에 필요한 데이터 전처리
히트맵을 그리는 함수는 matplotlib을 기반으로 두면서 더 다채로운 시각화를 할 수 있는 seaborn 패키지 내의 heatmap 함수를 이용하여 진행할 수 있습니다. 먼저 데이터 전처리를 다음과 같이 수행해보도록 하겠습니다.
히트맵을 그리기 위해서는 원하는 범주 2개로 그룹화 후 unstack을 통하여 윗 그림의 데이터프레임처럼 형태를 만들어주는 전처리 작업이 필요합니다.
파이썬 히트맵 : Seaborn의 sns.heatmap 함수
이제 전처리가 완료된 데이터프레임을 통하여 히트맵을 그려보도록 하겠습니다.
우선, 자세한 내용은 아래 소스 코드를 참고해주시면 좋을 듯 합니다.
import matplotlib.pyplot as plt
import seaborn as sns
# 히트맵을 그릴 격자 생성
fig, ax = plt.subplots(figsize=(12,6))
sns.heatmap(heat, # 위에서 전처리한 데이터프레임
annot = True, # 숫자 표시 여부
ax = ax, # 히트맵을 그릴 격자
linewidths = 0.4, # 선의 굵기
linecolor = 'white', # 선의 색깔
fmt = '.1f', # 소수점 포맷팅 형태
cmap = 'YlOrRd') # colormap 형태
plt.title('bike sharing by season and hours', size = 15)
plt.ylabel('season', size = 13)
plt.xlabel('hours', size = 13)
plt.xticks(rotation=45, size = 12)
plt.yticks(size=12)
plt.show()
위의 소스 코드에서는 sns.heatmap의 대표적인 인자들에 대해서 설명했는데요, 그 외에도
히트맵에 표시할 최소, 최대 숫자를 지정하는 vmin, vmax 인자,
오른쪽에 colorbar를 표시할 것인지 여부를 지정하는 cbar 인자,
일부 데이터를 표시하지 않을 것인지를 지정하는 mask 인자 등
여기서 다루지 않은 여러 기능을 많이 지원하고 있습니다. 자세한 내용이 궁금하시다면 sns.heatmap 함수의 공식 document를 참고해보시면 될 듯 합니다.
이상으로 두 범주형 자료 사이의 관계를 한 눈에 시각화하기 좋은 히트맵 자료형에 대한 포스팅이었습니다.
'Python > Matplotlib' 카테고리의 다른 글
[Matplotlib] 파이썬 다중 막대 그래프 그리기 예제 (0) | 2021.11.30 |
---|---|
[Matplotlib] 파이썬 plt 버블 차트(Bubble plot) 예제 (0) | 2021.11.28 |
[Matplotlib] 파이썬 plt 파이 차트 그리는 방법 (0) | 2021.11.26 |