Matplotlib 고급

imshow와 컬러맵으로 히트맵

ax.imshow, 컬러맵, 컬러바, 칸마다 적힌 값으로 2차원 표를 히트맵으로 그립니다.

소개

히트맵은 표의 각 칸을 값에 따라 색칠하므로 행과 열의 패턴이 한눈에 보입니다. ax.imshow는 2차원 배열을 색칠한 칸으로 그리고, 컬러맵(cmap)은 숫자를 색으로 바꾸며, fig.colorbar는 색 눈금을 보여 줍니다.

visits는 7 × 6 배열로, 행은 요일이고 열은 시간대입니다. imshow는 행 0을 맨 위에 그리며, set_xticks / set_yticks로 열과 행에 이름을 붙입니다. 이중 반복문은 ax.text(열, 행, ...)로 각 칸에 값을 씁니다. viridis 같은 순차 컬러맵은 낮은 값에서 높은 값으로 가는 데이터에, coolwarm 같은 발산 컬러맵은 가운데보다 높거나 낮은 값에 어울립니다.

인터랙티브 시각화

다른 컬러맵을 써 보고 숫자와 컬러바를 숨겨 보세요. 좋은 컬러맵은 높은 값과 낮은 값을 쉽게 구분하게 해 줍니다.

실행 가능한 Matplotlib 예제

Matplotlib
코드 실행 →
main.py
import matplotlib.pyplot as plt
import numpy as np

days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
hours = ["6am", "9am", "12pm", "3pm", "6pm", "9pm"]
rng = np.random.default_rng(2)
visits = rng.integers(5, 60, size=(len(days), len(hours)))

fig, ax = plt.subplots(figsize=(7, 4))
image = ax.imshow(visits, cmap="viridis")
ax.set_xticks(range(len(hours)), hours)
ax.set_yticks(range(len(days)), days)
for row in range(len(days)):
    for col in range(len(hours)):
        ax.text(col, row, visits[row, col], ha="center", va="center", color="white", fontsize=8)
fig.colorbar(image, label="Visits")
ax.set_title("Website visits by day and hour")
plt.show()
이 예제의 실행 버튼 만들기 이 코드가 그리는 차트
imshow와 컬러맵으로 히트맵