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

Matplotlib에서 z = f(x, y) 함수를 부드러운 2D 색상 플롯으로 시각화하는 방법

Matplotlib에서 z = f(x, y) 형태의 함수를 부드러운 2D 색상 플롯으로 나타내려면 다음 단계를 따르면 됩니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 주변과 사이의 여백을 조정합니다.
  • NumPy를 사용하여 xy 데이터 포인트를 생성합니다.
  • 함수 f(x, y)를 적용하여 z 데이터 포인트를 계산합니다.
  • imshow() 메서드를 사용해 z 데이터를 2D 래스터 이미지 형태로 표시하며, 이때 보간(interpolation) 옵션을 활용하면 색상 전환이 부드러워집니다.
  • show() 메서드로 최종 그림을 화면에 출력합니다.

예제 코드

import numpy as np
from matplotlib import pyplot as plt

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

def f(x, y):
    return np.array([i * i + j * j for j in y for i in x]).reshape(5, 5)

x = y = np.linspace(-1, 1, 5)
z = f(x, y)

plt.imshow(z, interpolation='bilinear')

plt.show()

코드 설명

위 예제에서 함수 f(x, y) = x² + y²는 각 좌표에서의 값을 계산합니다. np.linspace(-1, 1, 5)는 -1부터 1까지 균일한 간격의 5개 데이터 포인트를 생성하며, 이를 통해 5×5 크기의 z 값 배열을 만듭니다.

핵심은 plt.imshow()interpolation='bilinear' 옵션을 지정하는 것입니다. 쌍선형 보간(bilinear interpolation)은 인접 픽셀 값들을 선형적으로 혼합하여 계단 현상 없이 매끄러운 색상 그라데이션을 만들어 줍니다.

실행 결과

Matplotlib에서 z = f(x, y) 함수를 부드러운 2D 색상 플롯으로 시각화하는 방법

결과 이미지를 보면 중앙에서 가장자리로 갈수록 값이 커지는 포물면(paraboloid) 형태의 색상 분포가 부드럽게 표현된 것을 확인할 수 있습니다.

추가 팁

더 세밀한 플롯이 필요하다면 데이터 포인트 수를 늘리거나(예: np.linspace(-1, 1, 100)), 'bicubic' 같은 고차 보간 방식을 사용할 수도 있습니다. 또한 plt.colorbar()를 추가하면 색상에 대응하는 z값의 범위를 직관적으로 파악할 수 있습니다.