Imshow()的图形太小了

我尝试使用 imshow ()可视化一个 numpy 数组,因为它类似于 Matlab 的 imagesc ()。

imshow(random.rand(8, 90), interpolation='nearest')

产生的图形在灰色窗口的中心非常小,而大部分空间是空闲的。如何设置参数使图形变大?我试过 figsize = (xx,xx) ,但它不是我想要的。谢谢!

293087 次浏览

这很奇怪,对我来说很有效:

from matplotlib import pyplot as plt


plt.figure(figsize = (20,2))
plt.imshow(random.rand(8, 90), interpolation='nearest')

顺便说一下,我正在使用“ MacOSX”后端。

我也是蟒蛇的新手。这里有些东西看起来可以做你想做的事情

axes([0.08, 0.08, 0.94-0.08, 0.94-0.08]) #[left, bottom, width, height]
axis('scaled')`

我相信这决定了画布的大小。

如果不给 imshow一个 aspect参数,它将在 matplotlibrc中使用 image.aspect的值。这个值在新的 matplotlibrc中的默认值是 equal。 因此 imshow将用等高宽比绘制数组。

如果你不需要一个相等的方面,你可以设置 aspectauto

imshow(random.rand(8, 90), interpolation='nearest', aspect='auto')

这给出了下面的数字

imshow-auto

如果你想要一个相等的纵横比,你必须根据纵横调整你的 figsize

fig, ax = subplots(figsize=(18, 2))
ax.imshow(random.rand(8, 90), interpolation='nearest')
tight_layout()

这就给了你:

imshow-equal

更新2020年

根据@baxxx 的请求,这里有一个更新,因为 random.rand同时被弃用。

这适用于 matplotlip 3.2.1:

from matplotlib import pyplot as plt
import random
import numpy as np


random = np.random.random ([8,90])


plt.figure(figsize = (20,2))
plt.imshow(random, interpolation='nearest')

这里的情节是:

enter image description here

为了改变随机数,你可以尝试使用 np.random.normal(0,1,(8,90))(这里的平均值 = 0,标准差 = 1)。