Matplotlib에서 여러 그림을 한 그림에 올바르게 표시하는 방법
Suraj Joshi
2023년1월30일
2020년4월28일
Matplotlib
Matplotlib Image

그림에 여러 이미지를 표시하는 핵심 아이디어는 축 목록을 반복하여 개별 이미지를 그리는 것입니다. imshow()
메소드를 사용하여 개별 이미지를 표시합니다.
for
루프에서 Matplotlib add_subplot()
사용
그림에 여러 이미지를 표시하는 가장 간단한 방법은add_subplot()
을 사용하여 서브 플롯을 시작하고imshow()
메소드를 사용하여 모든 이미지를 표시하여for
루프 안에 이미지를 표시하는 것입니다.
add_subplot()
메소드의 구문:
add_subplot(rows, columns, i)
여기서rows
와columns
는 복합 그림의 총 행과 열 수를 나타내고i
는 표시 할 이미지의 인덱스를 나타냅니다.
import numpy as np
import matplotlib.pyplot as plt
width=5
height=5
rows = 2
cols = 2
axes=[]
fig=plt.figure()
for a in range(rows*cols):
b = np.random.randint(7, size=(height,width))
axes.append( fig.add_subplot(rows, cols, a+1) )
subplot_title=("Subplot"+str(a))
axes[-1].set_title(subplot_title)
plt.imshow(b)
fig.tight_layout()
plt.show()
출력:
위의 코드에 유연성을 추가하여 선택한 축에 더 많은 피쳐를 플롯하고 각 서브 플로트 축에 대한 액세스를 제공 할 수 있습니다.
import numpy as np
import matplotlib.pyplot as plt
width=5
height=5
rows = 2
cols = 2
fig=plt.figure()
x=np.linspace(-3,3,100)
y1=np.sin(x)
y2=1/(1+np.exp(-x))
axes = []
for i in range(cols*rows):
b = np.random.randint(10, size=(height,width))
axes.append( fig.add_subplot(rows, cols, i+1) )
subplot_title=("Subplot"+str(i))
axes[-1].set_title(subplot_title)
plt.imshow(b)
axes[1].plot(x, y1)
axes[3].plot(x,y2)
fig.tight_layout()
plt.show()
출력:
여기서 axes
을 사용하면 각 하위 플롯을 조작 할 수 있습니다.
또는[row_index][column_index]
를 사용하여 각 하위 플롯에 대한 액세스를 제공 할 수도 있습니다. 이는 여러 이미지 배열이있을 때 더 유용합니다.
import numpy as np
import matplotlib.pyplot as plt
width=5
height=5
rows = 2
cols = 2
x=np.linspace(0,3,100)
y1=np.sin(x)
y2=1/(1+np.exp(-x))
figure, axes = plt.subplots(nrows=rows, ncols=cols)
for a, b in enumerate(axes.flat):
image = np.random.randint(7, size=(height,width))
b.imshow(image, alpha=0.25)
r = a // cols
c = a % cols
subtitle="Row:"+str(r)+", Col:"+str(c)
b.set_title(subtitle)
axes[0][1].plot(x, y1)
axes[1][1].plot(x,y2)
figure.tight_layout()
plt.show()
출력:
Matplotlib의 서브 플롯을 기반으로 함수 정의
그림에 여러 축을 생성하는 subplots
명령을 기반으로 함수를 정의 할 수 있습니다. 행 및 열 수에 따라 축 목록을 반복하여 각각에 제목을 추가하여 이미지를 플롯합니다.
import numpy as np
import matplotlib.pyplot as plt
def display_multiple_img(images, rows = 1, cols=1):
figure, ax = plt.subplots(nrows=rows,ncols=cols )
for ind,title in enumerate(images):
ax.ravel()[ind].imshow(images[title])
ax.ravel()[ind].set_title(title)
ax.ravel()[ind].set_axis_off()
plt.tight_layout()
plt.show()
total_images = 4
images = {'Image'+str(i): np.random.rand(100, 100) for i in range(total_images)}
display_multiple_img(images, 2, 2)
출력:
Author: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn