동일한 모양 (예 : (64, 64, 3))의 이미지 배열이 있습니다. 내가 pyplot.subplot()
을 사용하여 그리드에 그려보고 싶지만, 내가 할 때 pyplot.subplots_adjust(hspace=0, wspace=0)
을 사용할 때도 이미지 사이에 원하지 않는 간격이 생깁니다. 다음은 코드 예제입니다.matplotlib pyplot 이미지 간 간격을 좁히십시오.
from matplotlib import pyplot
import numpy
def create_dummy_images():
"""
Creates images, each of shape (64, 64, 3) and of dtype 8-bit unsigned integer.
:return: 4 images in a list.
"""
saturated_channel = numpy.ones((64, 64), dtype=numpy.uint8) * 255
zero_channel = numpy.zeros((64, 64), dtype=numpy.uint8)
red = numpy.array([saturated_channel, zero_channel, zero_channel]).transpose(1, 2, 0)
green = numpy.array([zero_channel, saturated_channel, zero_channel]).transpose(1, 2, 0)
blue = numpy.array([zero_channel, zero_channel, saturated_channel]).transpose(1, 2, 0)
random = numpy.random.randint(0, 256, (64, 64, 3))
return [red, green, blue, random]
if __name__ == "__main__":
images = create_dummy_images()
for i, image in enumerate(images):
pyplot.subplot(2, 2, i + 1)
pyplot.axis("off")
pyplot.imshow(image)
pyplot.subplots_adjust(hspace=0, wspace=0)
pyplot.show()
다음은 출력물입니다.
당신이 볼 수 있듯이, 이러한 이미지 사이에 원치 않는 수직 공간이있다. 이 문제를 우회하는 한 가지 방법은 Jupyter Notebook에서 matplotlib.rcParams['figure.figsize'] = (_, _)
과 같이 숫자에 맞는 크기를 조심스럽게 손으로 선택하는 것입니다. 그러나, 보통 내가 구상하기를 원하는 이미지의 수는 내가 플로팅 할 때마다 다르며 매번 올바른 크기를 손으로 따는 것은 매우 불편합니다 (특히 Matplotlib의 크기가 정확히 무엇인지 의미 할 수 없기 때문에). 그래서 Matplotlib이 모든 크기 (64 x 64)가 서로 나란히 있어야한다는 필자의 요구에 따라 Matplotlib이 자동으로 크기를 계산할 수있는 방법이 있습니까? (또는 그 거리에 서로 지정된 거리가 있습니까?)
당신이 4 개 이미지는 2 × 2 그리드에있을 때이 작품을 입증 할 수, 단일 행에 반대하는 것처럼? 내 방법은 단일 행에서도 작동하지만 2 x 2 그리드에서는 작동하지 않습니다. – Ray
@ 레이 위의 내 대답을 수정했습니다. –