在matplotlib中删除已保存图像周围的空白 [英] Removing white space around a saved image in matplotlib
问题描述
我需要拍摄图像并经过一些处理后将其保存.显示该图形时,它看起来不错,但是保存该图形后,在保存的图像周围有一些空白.我已经尝试过savefig
方法的'tight'
选项,但也不起作用.代码:
I need to take an image and save it after some process. The figure looks fine when I display it, but after saving the figure, I got some white space around the saved image. I have tried the 'tight'
option for savefig
method, did not work either. The code:
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绘制基本图形并将其保存.我意识到没有图它会起作用,但是当添加一个图时,在保存的图像周围会出现空白;
I am trying to draw a basic graph by using NetworkX on a figure and save it. I realized that without graph it works, but when added a graph I get white space around the saved image;
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()
推荐答案
我无法声称我确切知道我的解决方案"的原因或方式;可以,但是这是我要绘制几个机翼截面轮廓时要做的事情—没有白色边距—到PDF文件. (请注意,我在带有-pylab标志的IPython笔记本中使用了matplotlib.)
I cannot claim I know exactly why or how my “solution” works, but this is what I had to do when I wanted to plot the outline of a couple of aerofoil sections — without white margins — to a PDF file. (Note that I used matplotlib inside an IPython notebook, with the -pylab flag.)
plt.gca().set_axis_off()
plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0,
hspace = 0, wspace = 0)
plt.margins(0,0)
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.gca().yaxis.set_major_locator(plt.NullLocator())
plt.savefig("filename.pdf", bbox_inches = 'tight',
pad_inches = 0)
我尝试停用此功能的不同部分,但这总是导致某处出现空白.您甚至可以对此进行修改,以防止由于缺乏边距而使图形附近的粗线不被刮掉.
I have tried to deactivate different parts of this, but this always lead to a white margin somewhere. You may even have modify this to keep fat lines near the limits of the figure from being shaved by the lack of margins.
这篇关于在matplotlib中删除已保存图像周围的空白的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!