matplotlib:拉伸图像以覆盖整个图形

问题描述 投票:5回答:3

我已经非常习惯于使用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时,它的大小与输入图形的大小完全相同,并且被图像完全覆盖了。

谢谢。

matplotlib figure
3个回答
6
投票

我使用以下代码段进行了此操作。

#!/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中提到的提及savefigbbox_inches='tight'或p pad_inches=-1]的ad_inches=0的参数>


1
投票

您可以使用以下功能。它根据所需的dpi分辨率计算图形所需的尺寸(以英寸为单位)。


0
投票

这是最小的面向对象的解决方案:

© www.soinside.com 2019 - 2024. All rights reserved.