imshow() 的图太小

Posted

技术标签:

【中文标题】imshow() 的图太小【英文标题】:figure of imshow() is too small 【发布时间】:2012-05-19 10:25:46 【问题描述】:

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

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

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

【问题讨论】:

只需添加此评论,以防像我这样的其他人难以登陆该帖子 --- 当 x 和 y 数据的数量级不同时,问题就会发生(最明显); @bmu 的回答修复了它 【参考方案1】:

这很奇怪,它确实对我有用:

from matplotlib import pyplot as plt

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

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

【讨论】:

要清楚,它必须是 plt.figure(figsize = (x_new, y_new)) 并且对于 imgshow() 你现在必须导入 ioimage 因为 SciPy imageshow() 很快就会被弃用 @AgileBean 如果您要使用该信息编辑此帖子或将其添加为此问题的答案,这将很有用【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

如果您不向imshow 提供aspect 参数,它将使用matplotlibrcimage.aspect 的值。新matplotlibrc 中此值的默认值为equal。 所以imshow 将以相同的纵横比绘制你的数组。

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

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

给出下图

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

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

给你:

【讨论】:

除了定义纵横比之外,是否可以获取(定义)彩色图块的大小?【参考方案4】:

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')

这个情节:

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

【讨论】:

以上是关于imshow() 的图太小的主要内容,如果未能解决你的问题,请参考以下文章

python 利用matplotlib中imshow()函数绘图

sklearn plot_tree 图太小

MATLAB的图像显示函数imshow()详解

opencv imshow plt imshow

plt.imshow与cv2.imshow显示颜色问题

使用 pylab.imshow() 显示图像