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

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

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

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

【问题讨论】:

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

标签: python numpy matplotlib


【解决方案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)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      相关资源
      最近更新 更多