在matplotlib中自动调整图形大小

python matplotlib

48855 观看

5回复

7109 作者的声誉

有没有办法自动调整图形大小以正确拟合matplotlib / pylab图像中包含的图?

我正在根据使用的数据创建长宽比不同的热图(子)图。

我意识到我可以计算宽高比并手动设置它,但肯定有一种更简单的方法吗?

作者: pufferfish 的来源 发布者: 2009 年 8 月 13 日

回应 5


3

3423 作者的声誉

您的意思是改变图像的大小或在图中可见的区域吗?

可以使用Figure.set_figsize_inches设置图形的大小。此外,SciPy Cookbook还有一个关于改变图像大小的条目,其中包含有关每个图形的多个图像的部分。

另外看看这个问题

作者: wierob 发布者: 2009 年 8 月 13 日

39

7109 作者的声誉

决定

使用bbox_inches ='紧'

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

X = 10*np.random.rand(5,3)

fig = plt.figure(figsize=(15,5),facecolor='w') 
ax = fig.add_subplot(111)
ax.imshow(X, cmap=cm.jet)

plt.savefig("image.png",bbox_inches='tight',dpi=100)

...仅在保存图像时有效,而不显示图像。

作者: pufferfish 发布者: 2009 年 8 月 14 日

12

170 作者的声誉

只需在调用imshow时使用aspect ='auto'

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

X = 10*np.random.rand(5,3)
plt.imshow(X, aspect='auto')

它即使只是为了显示而不是保存也能工作

作者: Homero Barrocas S Esmeraldo 发布者: 2012 年 5 月 4 日

4

447 作者的声誉

另一种方法是使用matplotlib tight_layout函数

import matplotlib.pyplot as plt
fig,(ax) = plt.subplots(figsize=(8,4), ncols=1)
data = [0,1,2,3,4]
ax.plot(data)
fig.tight_layout()
fig.show()
作者: Simon Hobbs 发布者: 2016 年 12 月 26 日

0

141 作者的声誉

你可以尝试使用axis('scaled')

import matplotlib.pyplot as plt
import numpy

#some dummy images
img1 = numpy.array([[.1,.2],[.3,.4]]) 
img2 = numpy.array([[.1,.2],[.3,.4]])

fig,ax = plt.subplots()
ax.imshow(img1,extent=[0,1,0,1])
ax.imshow(img2,extent=[2,3,0,1])
ax.axis('scaled') #this line fits your images to screen 
plt.show()
作者: jelde015 发布者: 2018 年 11 月 14 日
32x32