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()를 함께 사용하면 값의 크기를 직관적으로 파악할 수 있는 컬러바를 표시할 수 있습니다.