imshow()的数字太小了

Ruo*_*eng 80 python numpy matplotlib

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

imshow(random.rand(8, 90), interpolation='nearest')
Run Code Online (Sandbox Code Playgroud)

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

bmu*_*bmu 115

如果您不给出aspect参数imshow,它将使用您的值image.aspect中的值matplotlibrc.在一个新的该值的默认值matplotlibrcequal.因此,imshow将以相同的宽高比绘制阵列.

如果您不需要相同的方面,您可以设置aspectauto

imshow(random.rand(8, 90), interpolation='nearest', aspect='auto')
Run Code Online (Sandbox Code Playgroud)

这给出了下图

imshow-AUTO

如果你想要相同的宽高比,你必须figsize根据方面进行调整

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

这给你:

imshow平等


Nik*_*las 21

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

from matplotlib import pyplot as plt

plt.figure(figsize = (20,2))
plt.imshow(random.rand(8, 90), interpolation='nearest')
Run Code Online (Sandbox Code Playgroud)

我正在使用"MacOSX"后端,顺便说一下.

  • 为了清楚起见,它必须是`plt.figure(figsize =(x_new,y_new))`,对于imgshow(),您现在必须导入ioimage,因为SciPy imageshow()即将被弃用 (3认同)

Agi*_*ean 5

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')
Run Code Online (Sandbox Code Playgroud)

这情节:

在此处输入图片说明

要更改随机数,您可以尝试使用np.random.normal(0,1,(8,90))(此处均值 = 0,标准差 = 1)。