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

파이썬 Matplotlib으로 스칼라 2D 데이터 시각화하기

데이터 분석이나 과학 컴퓨팅에서 스칼라 값으로 이루어진 2D 데이터를 시각화해야 하는 경우가 자주 있습니다. 파이썬의 대표적인 시각화 라이브러리인 Matplotlib을 사용하면 이러한 데이터를 손쉽게 컬러맵 형태로 표현할 수 있습니다. 이 글에서는 pcolormesh() 함수를 활용해 스칼라 2D 데이터를 시각화하는 방법을 단계별로 살펴보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
  • 데이터 샘플 개수를 담을 변수 N을 초기화합니다.
  • NumPy를 사용하여 x, y 데이터 포인트를 생성합니다.
  • 좌표 벡터로부터 좌표 행렬(coordinate matrices)을 만듭니다.
  • NumPy 연산을 통해 z 데이터 포인트를 계산합니다.
  • pcolormesh()를 사용하여 비정규(non-regular) 직사각형 그리드 위에 유사컬러(pseudocolor) 플롯을 그립니다.
  • show() 메서드를 호출하여 그림을 화면에 출력합니다.

예제 코드

import numpy as np
from matplotlib import pyplot as plt

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

n = 256

x = np.linspace(-3., 3., n)
y = np.linspace(-3., 3., n)

X, Y = np.meshgrid(x, y)
Z = X * np.sinc(X ** 2 + Y ** 2)

plt.pcolormesh(X, Y, Z, cmap='copper', shading='flat')

plt.show()

코드 설명

위 코드의 핵심 부분을 자세히 살펴보겠습니다.

1. 그림 크기 설정

plt.rcParams["figure.figsize"]로 그림 크기를 가로 7.5인치, 세로 3.5인치로 지정하고, figure.autolayoutTrue로 설정하여 요소들이 잘리지 않도록 자동으로 여백을 조정합니다.

2. 데이터 생성

np.linspace(-3., 3., n)은 -3부터 3까지의 범위를 256개의 균일한 간격으로 나눈 배열을 생성합니다. 이후 np.meshgrid(x, y)를 호출하면 1차원 좌표 벡터 x와 y로부터 2차원 좌표 행렬 X, Y가 만들어집니다.

3. z값 계산

Z = X * np.sinc(X ** 2 + Y ** 2)는 각 격자점에서 sinc 함수 기반의 스칼라 값을 계산합니다. 이렇게 얻은 Z 배열이 시각화할 실제 데이터입니다.

4. pcolormesh로 시각화

pcolormesh(X, Y, Z, cmap='copper', shading='flat')는 격자 좌표에 따라 z 값을 색상으로 매핑합니다. 여기서는 'copper' 컬러맵을 사용하여 구리색 계열의 음영으로 데이터를 표현하며, shading='flat' 옵션은 각 셀을 단일 색상으로 채웁니다.

실행 결과

코드를 실행하면 중심에서 방사형으로 퍼지는 물결 무늬가 copper 색조의 컬러 플롯으로 나타납니다. 값이 높은 영역은 밝게, 낮은 영역은 어둡게 표현되어 2D 스칼라 필드의 분포를 한눈에 파악할 수 있습니다.

마무리

이처럼 Matplotlib의 pcolormesh() 함수를 사용하면 복잡한 설정 없이도 스칼라 2D 데이터를 직관적인 컬러 플롯으로 시각화할 수 있습니다. 컬러맵을 'viridis', 'jet', 'hot' 등 다른 옵션으로 바꾸면 같은 데이터도 전혀 다른 느낌으로 표현할 수 있으니, 다양한 cmap 값을 실험해 보시기 바랍니다.