파이썬의 Matplotlib에서는 imshow() 함수를 여러 번 호출하고 투명도(alpha) 값을 조절하여 하나의 좌표 평면 위에 여러 이미지를 겹쳐 그릴 수 있습니다. 아래 단계에 따라 계층화된 이미지를 손쉽게 구현할 수 있습니다.
구현 단계
- 그림 크기(figure size)를 설정하고 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
- NumPy를 사용하여 dx, dy, x, y 및 이미지 범위(extent) 데이터를 생성합니다.
figure()메서드로 새 그림을 만들거나 기존 그림을 활성화합니다.- 2D 래스터(raster) 형태로 표시할 data1과 data2 배열을 생성합니다.
imshow()를 두 번 호출하되, 두 번째 이미지에는alpha인자를 지정하여 아래 이미지가 비치도록 합니다.show()메서드로 최종 결과를 화면에 출력합니다.
예제 코드
import matplotlib.pyplot as plt import numpy as np plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True dx, dy = 0.05, 0.05 x = np.arange(-3.0, 3.0, dx) y = np.arange(-3.0, 3.0, dy) extent = np.min(x), np.max(x), np.min(y), np.max(y) fig = plt.figure(frameon=False) data1 = np.random.rand(5, 5) plt.imshow(data1, cmap="plasma", interpolation='nearest', extent=extent) data2 = np.random.rand(5, 5) plt.imshow(data2, cmap="copper", alpha=.9, interpolation='bilinear', extent=extent) plt.show()
핵심 포인트
이 예제에서 중요한 요소는 세 가지입니다. 첫째, 두 이미지 모두 동일한 extent를 사용해야 같은 좌표 공간에 정렬됩니다. 둘째, 두 번째 imshow() 호출에서 alpha=0.9처럼 투명도를 지정하면 아래층의 plasma 컬러맵 이미지가 비쳐 보이며 자연스럽게 겹쳐진 효과를 얻을 수 있습니다. 셋째, 각 이미지에 서로 다른 컬러맵(plasma, copper)과 보간 방식(nearest, bilinear)을 적용하면 시각적 구분이 더욱 명확해집니다.
출력 결과
