在matplotlib中自动调整图形大小
有没有办法让图像自动调整大小,以便能合适地显示里面的图表,像在matplotlib或pylab中那样?
我正在创建热图(子图),这些图的长宽比会根据使用的数据而不同。
我知道可以计算长宽比然后手动设置,但肯定有更简单的方法吧?
6 个回答
18
在你调用 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')
这样做即使只是为了显示,而不是保存,也能正常工作。
21
另一种方法是使用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()
77
使用 bbox_inches='tight'
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)
...这个只在保存图片的时候有效,不能用来显示图片。