问题
import numpy as np
import sys
import matplotlib as mpl
import matplotlib.pyplot as plt
i use the following code to save an image
fig, ax = plt.subplots(frameon=False)
ax.axis ('off')
ax.imshow (array[:,:,0,0,0])
fig.savefig ("file.png", bbox_inches='tight')
However, what I get is and this obviously still has a white border. How do I get rid of it?
The array.shape is: (256, 256, 1, 1, 3)
回答1:
Look at my example it may help you:
import numpy as np
import matplotlib.pyplot as plt
def save_image(data, filename):
sizes = np.shape(data)
fig = plt.figure()
fig.set_size_inches(1. * sizes[0] / sizes[1], 1, forward = False)
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)
ax.imshow(data)
plt.savefig(filename, dpi = sizes[0], cmap='hot')
plt.close()
data = np.random.randint(0, 100, (256, 256))
save_image(data, '1.png')
回答2:
Little modification to above answer:
def save_image(data, filename):
sizes = np.shape(data)
fig = plt.figure(figsize=(1,1))
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)
ax.imshow(data, cmap = plt.get_cmap("bone"))
plt.savefig(filename, dpi = sizes[0])
plt.close()
来源:https://stackoverflow.com/questions/37809697/remove-white-border-when-using-subplot-and-imshow-in-python-matplotlib