본 포스팅에서는 matplotlib 라이브러리를 활용하여 여러 개의 배열 이미지를 한 번에 시각화하는 법에 대해 얘기하고자 합니다.
여러개의 배열 시각화
여러개의 배열을 시각화하는 이유로는 여러 개의 이미지를 한 번에 보고 비교하거나 3D이상의 데이터의 형태 및 경향성을 보기 위해 주로 사용됩니다. 특히 저는 3D 이미지를 주로 다루기에 여러개의 슬라이스를 한 번에 봐야 하는 경우가 많이 있는데요.
오늘은 matplotlib 라이브러리를 활용하여 한번에 다수의 이미지를 시각화해보겠습니다.
우선 아래와 같이 pred라는 3D 배열이 있습니다. 해당 예시는 특정 영상의 마스크를 예시로 가져왔습니다.
pred.shape
# (64, 64, 64)
matplotlib.pyplt을 가져온 후 해당 라이브러리에서 제공하는 subplot 함수와 imshow를 활용하여 한번에 시각화해보죠.
import matplotlib.pyplot as plt
for i in range(64):
plt.subplot(8,8,i+1)
plt.imshow(pred[i],'gray')
subplot의 인자로는 순서대로 가로, 세로, 인덱스가 입력이 됩니다. 인덱스는 0부터 시작이 아닌 1부터 시작으로 i+1을 해주었습니다.
위 예시는 pred 변수의 z 축이 64이므로 64개를 한 번에 보고자 하였고 가로 8 세로 8의 같은 크기의 인덱스로 구성해 주었습니다. 물론 4x16 혹은 16x4와 같이 비균등하게 가로, 세로의 인덱스를 구성할 수도 있습니다.
for i in range(64):
plt.subplot(4,16,i+1)
plt.imshow(pred[i],'gray')
###
for i in range(64):
plt.subplot(16,4,i+1)
plt.imshow(pred[i],'gray')
8x8로 고정하고 여기서 한 가지 바꾸고 싶은 부분이 있다면 바로 그림 크기와 저 주변에 더러운 axis 표시를 제거하고 싶으실 겁니다.
이때는 plt.figure(figsize=[크기])를 통해 전체적인 figure 크기를 변경할 수 있습니다. 또한 plt.axis('off')를 사용하여 주변에 표시되었던 axis들도 제거가 가능합니다.
plt.figure(figsize=[10,10])
for i in range(64):
plt.subplot(8,8,i+1)
plt.imshow(pred[i],'gray')
plt.axis('off')
그러면 위 그림과 같이 깔끔하게 보고자 하는 이미지 슬라이스들만 시각화하실 수 있습니다.
'Python' 카테고리의 다른 글
[Python] assert 활용하기 (1) | 2023.02.27 |
---|---|
[Python] 파이썬에서 chatGPT 사용하는 법 (0) | 2023.02.23 |
[Python] re를 활용하여 문자열을 리스트로 변환하기 (0) | 2023.02.12 |
[Python] sys.modules, __getattr__, __setattr__ 활용하기 (0) | 2023.02.11 |
[Python] try except 활용하여 오류 모아보기 (0) | 2023.02.08 |
댓글