본문 바로가기
Python/Python FAQ

Python 축, 범례 및 흰색 여백을 제거하는 방법, How to remove axis, legends, and white padding

by 베타코드 2023. 10. 27.
반응형

질문


이미지에 컬러맵을 적용하고 matplotlib에 의해 자동으로 추가되는 축, 라벨, 제목 등 없이 결과 이미지를 작성하려고 합니다. 다음은 내가 한 것입니다:

def make_image(inputname,outputname):
    data = mpimg.imread(inputname)[:,:,0]
    fig = plt.imshow(data)
    fig.set_cmap('hot')
    fig.axes.get_xaxis().set_visible(False)
    fig.axes.get_yaxis().set_visible(False)
    plt.savefig(outputname)

이것은 그림의 축을 성공적으로 제거하지만, 저장된 그림은 실제 이미지 주위에 흰색 패딩과 프레임이 나타납니다.

이들을 어떻게 제거할 수 있을까요 (적어도 흰색 패딩)?


답변


axis('off') 메서드는 각 축과 테두리를 개별적으로 변경하는 것보다 더 간단하게 문제를 해결합니다. 그러나 여전히 테두리 주변의 여백은 남아 있습니다. savefig 명령에 bbox_inches='tight'를 추가하면 거의 해결할 수 있습니다. 아래 예시에서 보시는 바와 같이 남은 여백은 훨씬 작아지지만 여전히 존재합니다.

최신 버전의 matplotlib은 문자열 'tight' 대신에 bbox_inches=0을 요구할 수도 있습니다. (via @episodeyang and @kadrach)

from numpy import random
import matplotlib.pyplot as plt

data = random.random((5,5))
img = plt.imshow(data, interpolation='nearest')
img.set_cmap('hot')
plt.axis('off')
plt.savefig("test.png", bbox_inches='tight')

enter image description here

반응형

댓글