Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib로 헥스빈(Hexbin) 히스토그램 그리는 방법

Matplotlib 헥스빈 히스토그램이란?

헥스빈(hexbin) 플롯은 수천 개에 달하는 대량의 데이터 포인트를 육각형 모양의 격자(빈)로 나누어 각 영역의 데이터 밀도를 색상으로 표현하는 시각화 기법입니다. 일반적인 산점도(scatter plot)는 데이터가 많아질수록 점들이 겹쳐 분포를 파악하기 어려워지지만, 헥스빈 히스토그램을 사용하면 데이터가 집중된 영역을 한눈에 확인할 수 있습니다.

Matplotlib에서 헥스빈 히스토그램을 그리려면 hexbin() 메서드를 활용하면 되며, 전체 과정은 다음 단계로 진행됩니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 여백을 조정합니다.

  • NumPy를 사용하여 x, y 데이터 포인트를 생성합니다.

  • figure 객체와 서브플롯 축(ax)을 생성합니다.

  • hexbin() 메서드로 x, y 데이터를 플롯합니다.

  • 플롯의 제목을 설정합니다.

  • show() 메서드를 호출하여 결과 그림을 화면에 표시합니다.

예제 코드

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

x = 2 * np.random.randn(5000)
y = x + np.random.randn(5000)

fig, ax = plt.subplots()
_ = ax.hexbin(x[::10], y[::10], gridsize=20, cmap='plasma')

ax.set_title('Hexbin Histogram')

plt.show()

코드 설명

  • x = 2 * np.random.randn(5000): 평균 0, 표준편차 2를 따르는 정규분포 난수 5,000개를 생성합니다.

  • y = x + np.random.randn(5000): x 값에 표준편차 1의 잡음을 더해 양의 상관관계를 가진 y 데이터를 만듭니다.

  • x[::10], y[::10]: 슬라이싱을 통해 5,000개 중 10개씩 건너뛰어 총 500개의 데이터만 플롯에 사용합니다.

  • gridsize=20: x축 방향으로 20개의 육각형 빈을 생성하여 격자 해상도를 조절합니다. 값이 클수록 빈이 잘게 나뉩니다.

  • cmap='plasma': 데이터 밀도를 표현할 컬러맵을 plasma로 지정합니다. 'viridis', 'inferno' 등 다른 컬러맵으로 교체할 수 있습니다.

실행 결과

위 코드를 실행하면 양의 상관관계를 보이는 데이터 분포가 plasma 컬러맵으로 표현된 육각형 빈 히스토그램이 출력되며, 데이터가 밀집한 중심부일수록 진한 색상으로 표시됩니다.