matplotlib:拉伸图像以覆盖整个图形 [英] matplotlib: Stretch image to cover the whole figure
问题描述
我已经非常习惯于使用matlab,现在尝试使matplotlib和numpy转变.matplotlib中是否有一种方法可以使您绘制的图像占据整个图形窗口.
I am quite used to working with matlab and now trying to make the shift matplotlib and numpy. Is there a way in matplotlib that an image you are plotting occupies the whole figure window.
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时,它的大小与输入图形的大小完全相同,并且完全被图像覆盖.
I want the image to maintain its aspect ratio and scale to the size of the figure ... so when I do savefig it exactly the same size as the input figure, and it is completely covered by the image.
谢谢.
推荐答案
我使用以下代码段进行了此操作.
I did this using the following snippet.
#!/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'
来更改或您的比率.
Note the grey border on the sides is related to the aspect rario of the Axes which is altered by setting aspect='equal'
, or aspect='auto'
or your ratio.
也正如Zhenya在评论类似的StackOverflow问题中所提到的一个>提到了 bbox_inches ='tight'
和 pad_inches = -1
或p ad_inches = 0
Also as mentioned by Zhenya in the comments Similar StackOverflow Question
mentions the parameters to savefig
of bbox_inches='tight'
and pad_inches=-1
or pad_inches=0
这篇关于matplotlib:拉伸图像以覆盖整个图形的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!