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

파이썬 Matplotlib에서 여러 이미지를 겹쳐 그리는 방법

파이썬의 Matplotlib에서는 imshow() 함수를 여러 번 호출하고 투명도(alpha) 값을 조절하여 하나의 좌표 평면 위에 여러 이미지를 겹쳐 그릴 수 있습니다. 아래 단계에 따라 계층화된 이미지를 손쉽게 구현할 수 있습니다.

구현 단계

  • 그림 크기(figure size)를 설정하고 서브플롯 주변과 사이의 여백(padding)을 조정합니다.
  • NumPy를 사용하여 dx, dy, x, y 및 이미지 범위(extent) 데이터를 생성합니다.
  • figure() 메서드로 새 그림을 만들거나 기존 그림을 활성화합니다.
  • 2D 래스터(raster) 형태로 표시할 data1data2 배열을 생성합니다.
  • 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)을 적용하면 시각적 구분이 더욱 명확해집니다.

출력 결과

파이썬 Matplotlib에서 여러 이미지를 겹쳐 그리는 방법