I would like to apply colormap to an image, and write the resulting image, without using axes, labels, titles, or anything automatically added by matplotlib. Here is what I did:
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)
It successfully removes the axis of the figure, but the figure saved, presents a white padding, and a frame around the actual image.
How can I remove them (at least the white padding)?
The
axis('off')method resolves one of the problems more succinctly than separately changing each axis and border. It still leaves the white space around the border however. Addingbbox_inches='tight'to thesavefigcommand almost gets you there; you can see in the example below that the white space left is much smaller, but still present.Newer versions of matplotlib may require
bbox_inches=0instead of the string'tight'(via @episodeyang and @kadrach)