Remove white border when using subplot and imshow in python (Matplotlib)

邮差的信 提交于 2021-01-22 04:24:59

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!