我已经非常习惯于使用matlab,现在正尝试进行matplotlib和numpy的转换。 matplotlib中是否有一种方法可以让您绘制的图像占据整个图形窗口。
import numpy as np
import matplotlib.pyplot as plt
# get image im as nparray
# ........
plt.figure()
plt.imshow(im)
plt.set_cmap('hot')
plt.savefig("frame.png")
我希望图像保持其长宽比并缩放到图形的大小...因此,当我执行savefig时,它的大小与输入图形的大小完全相同,并且被图像完全覆盖了。
谢谢。
我使用以下代码段进行了此操作。
#!/usr/bin/env python
import numpy as np
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
from pylab import *
delta = 0.025
x = y = np.arange(-3.0, 3.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = Z2-Z1 # difference of Gaussians
ax = Axes(plt.gcf(),[0,0,1,1],yticks=[],xticks=[],frame_on=False)
plt.gcf().delaxes(plt.gca())
plt.gcf().add_axes(ax)
im = plt.imshow(Z, cmap=cm.gray)
plt.show()
注意,两侧的灰色边框与轴的纵横比有关,可以通过设置aspect='equal'
或aspect='auto'
或您的比例来更改。
[也正如Zhenya在评论Similar StackOverflow Question中提到的提及savefig
和bbox_inches='tight'
或p pad_inches=-1
]的ad_inches=0
的参数>
您可以使用以下功能。它根据所需的dpi分辨率计算图形所需的尺寸(以英寸为单位)。
这是最小的面向对象的解决方案: