安排图像大小matplotlib

时间:2012-08-01 16:54:15

标签: python plot matplotlib

我通过imread()拍摄图像,但图像的大小与图像不同。此外,当我保存图形时,图像周围的白色/灰色空间被视为图像的一部分。

我想要的是获取图像,在经过一些处理后保存图像并且图像大小相同且没有白色/灰色空间。

实际上,我尝试做的是使用NetworkX包在图像上绘制图形并保存我在其他地方使用的图形。

代码就是这样;

import matplotlib.pyplot as plt 
import networkx as nx 
import matplotlib.image as mpimg 


G = nx.cycle_graph(80) 
pos = nx.circular_layout(G) 
img = mpimg.imread(path1) 
plt.imshow(img)

nx.draw(G,pos) 
nx.draw(G, pos=pos) 

plt.axis('off')
plt.show() 
plt.savefig('test.png')

问候

1 个答案:

答案 0 :(得分:1)

这取决于你如何保存你的图像 - 你应该使用

import matplotlib.pylab as pp
pp.imwrite('savedimage.png', matrix)

而不是创建图中的savefig选项 - 我想这就是生成边框的地方。

如果您需要保存图形,因为图中添加了其他元素,那么您需要做三件事,

  • 调整轴的大小以填充图形
  • 确保图形与原始图像具有相同的宽高比
  • 设置图形的dpi,使保存的图像与输入图像的尺寸相同。

这些都是在matplotlib

中完成的

第1步:

ax = pp.gca()
ax.set_position([0,0,1,1])

第2步:

asprat = float(img.shape[0])/img.shape[1]
sz = fig.get_size_inches()
fig.set_figsize_inches([sz[0], asprat * sz[1])

第3步:

fig.set_dpi( img.shape[0]/sz[0] )

尝试一下 - 如果图像是旋转绘制的,我可能已切换尺寸。