imshow()的数字太小了

时间:2012-05-10 19:31:36

标签: python numpy matplotlib

我正在尝试使用imshow()来显示一个numpy数组,因为它类似于Matlab中的imagesc()。

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

在灰色窗口的中心,所得到的数字非常小,而大部分空间都未被占用。如何设置参数以使图形更大?我试过figsize =(xx,xx),这不是我想要的。谢谢!

4 个答案:

答案 0 :(得分:102)

如果您未向aspect提供imshow参数,则会在image.aspect中使用matplotlibrc的值。新matplotlibrc中此值的默认值为equal。 所以imshow会以相等的宽高比绘制你的数组。

如果您不需要相同的方面,可以将aspect设置为auto

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

答案 1 :(得分:18)

这很奇怪,它绝对适合我:

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

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

答案 2 :(得分:2)

我也是python的新手。这是看起来会做你想做的事情

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

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

答案 3 :(得分:1)

更新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)。