반응형
질문
이미지에 컬러맵을 적용하고 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')
반응형
댓글