在matplotlib中删除保存的图像周围的空白区域

我需要拍摄一张照片,并在一些处理后保存。 当我显示图时,该图看起来很好,但是当我保存图时,我在保存的图像周围得到了一些空白区域。 我试过savefig方法的'tight'选项,也没有工作。 代码:

  import matplotlib.image as mpimg import matplotlib.pyplot as plt fig = plt.figure(1) img = mpimg.imread(path) plt.imshow(img) ax=fig.add_subplot(1,1,1) extent = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted()) plt.savefig('1.png', bbox_inches=extent) plt.axis('off') plt.show() 

我试图通过在图上使用NetworkX来绘制基本graphics并保存。 我意识到,没有graphics的作品,但是当添加一个graphics时,我得到了保存的图像周围的空白;

 import matplotlib.image as mpimg import matplotlib.pyplot as plt import networkx as nx G = nx.Graph() G.add_node(1) G.add_node(2) G.add_node(3) G.add_edge(1,3) G.add_edge(1,2) pos = {1:[100,120], 2:[200,300], 3:[50,75]} fig = plt.figure(1) img = mpimg.imread("C:\\images\\1.jpg") plt.imshow(img) ax=fig.add_subplot(1,1,1) nx.draw(G, pos=pos) extent = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted()) plt.savefig('1.png', bbox_inches = extent) plt.axis('off') plt.show() 

您可以通过在savefig设置bbox_inches="tight"来删除空格填充:

 plt.savefig("test.png",bbox_inches='tight') 

你必须把这个参数作为一个string放到bbox_inches中,也许这就是为什么它没有为你工作的原因。


可能的重复项目:

Matplotlib绘图:删除轴,图例和空白

如何设置一个matplotlib图的边距?

减lessmatplotlib图中的左右边距

我不能说我确切地知道我的“解决scheme”为什么或如何工作,但是当我想将几个翼型部分的轮廓 – 没有白边 – 绘制成PDF文件时,这就是我所要做的。 (请注意,我在IPython笔记本中使用了matplotlib,并带有-pylab标志。)

 gca().set_axis_off() subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0) margins(0,0) gca().xaxis.set_major_locator(NullLocator()) gca().yaxis.set_major_locator(NullLocator()) savefig("filename.pdf", bbox_inches = 'tight', pad_inches = 0) 

我试图停用这个不同的部分,但这总是会导致某处的白色边缘。 你甚至可以修改这个来保持靠近数字极限的粗线,以免因缺乏边距而被削减。

我find了一些来自Arvind Pereira( http://robotics.usc.edu/~ampereir/wordpress/?p=626 )的东西,似乎对我有用:

 plt.savefig(filename, transparent = True, bbox_inches = 'tight', pad_inches = 0)