Matplotlib에서 z = f(x, y) 형태의 함수를 부드러운 2D 색상 플롯으로 나타내려면 다음 단계를 따르면 됩니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변과 사이의 여백을 조정합니다.
- NumPy를 사용하여 x와 y 데이터 포인트를 생성합니다.
- 함수 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)은 인접 픽셀 값들을 선형적으로 혼합하여 계단 현상 없이 매끄러운 색상 그라데이션을 만들어 줍니다.
실행 결과

결과 이미지를 보면 중앙에서 가장자리로 갈수록 값이 커지는 포물면(paraboloid) 형태의 색상 분포가 부드럽게 표현된 것을 확인할 수 있습니다.
추가 팁
더 세밀한 플롯이 필요하다면 데이터 포인트 수를 늘리거나(예: np.linspace(-1, 1, 100)), 'bicubic' 같은 고차 보간 방식을 사용할 수도 있습니다. 또한 plt.colorbar()를 추가하면 색상에 대응하는 z값의 범위를 직관적으로 파악할 수 있습니다.