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

Python Matplotlib로 밀도 맵(Density Map) 그리는 방법

Python의 Matplotlib 라이브러리를 사용하면 간단한 코드 몇 줄만으로 밀도 맵(density map)을 손쉽게 시각화할 수 있습니다. 이 글에서는 NumPy와 Matplotlib을 활용해 밀도 맵을 그리는 단계별 방법을 소개합니다.

밀도 맵 그리기 단계

  • 데이터 생성: NumPy의 linspace() 함수를 사용하여 side, x, y, z 데이터를 만듭니다. linspace()는 시작점과 끝점 사이를 지정한 개수만큼 균등하게 나눈 값을 반환하므로 격자 데이터 생성에 매우 유용합니다.

  • 좌표 행렬 생성: meshgrid() 메서드를 사용하여 좌표 벡터로부터 2차원 좌표 행렬을 반환받습니다.

  • 지수 데이터 계산: 앞서 만든 x, y 좌표를 활용해 가우시안 형태의 지수(exponential) 데이터를 생성합니다.

  • 유사 컬러 플롯(Pseudocolor Plot) 작성: pcolormesh() 메서드를 사용하여 비정규 직사각형 격자 위에 밀도 맵을 그립니다.

  • 그래프 출력: show() 메서드를 호출하여 완성된 그림을 화면에 표시합니다.

예제 코드

from matplotlib import pyplot as plt, cm, colors
import numpy as np

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

side = np.linspace(-2, 2, 15)
X, Y = np.meshgrid(side, side)
Z = np.exp(-((X - 1) ** 2 + Y ** 2))

plt.pcolormesh(X, Y, Z, shading='auto')

plt.show()

실행 결과

위 코드를 실행하면 (-2, 2) 범위의 격자 위에 중심이 (1, 0)인 지점에서 값이 가장 높은 가우시안 분포 형태의 밀도 맵이 출력됩니다. 색상이 밝을수록 해당 영역의 밀도(값)가 높다는 것을 의미합니다.

추가 팁

pcolormesh()cmap 인자를 추가하면 다양한 컬러맵(예: 'viridis', 'hot', 'jet')을 적용할 수 있고, plt.colorbar()를 함께 사용하면 값의 크기를 직관적으로 파악할 수 있는 컬러바를 표시할 수 있습니다.