【问题标题】:What does extent really do in matplotlib?范围在 matplotlib 中的真正作用是什么?
【发布时间】:2018-07-22 06:53:37
【问题描述】:

在导入图像和来自 numpy.我将图表的范围更改为双倍最大范围(即 20x20 矩阵的 40x40),但它们看起来仍然相同。在这种情况下,我找不到任何关于真正程度的文档。它是复制我的数据、对其进行插值还是其他一些功能?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    我想你在这里询问imshowextent 关键字参数。

    这用于定义轴中图像的单位。默认情况下,即不设置extent,单位就是数组的像素。例如。如果你有一个 10x10 像素的图像,范围是(-0.5, 9.5, 9.5, -0.5)

    import matplotlib.pyplot as plt
    import numpy as np; np.random.seed(42)
    
    data = np.random.rand(10,10)
    
    fig, ax = plt.subplots()
    
    im = ax.imshow(data)
    print(im.get_extent())  # prints (-0.5, 9.5, 9.5, -0.5)
    

    每个像素都是一个单位大,整数是像素中心。

    但是,您可能希望对图像使用不同的单位。可能您对数据进行了校准,或者数据是使用不同单位的计算结果。在这种情况下,extent 可以设置为确定图像将驻留在轴单位的 2D 空间中的哪个位置。例如。如果您希望图像范围在 x 方向从 -300 到 300,在 y 方向从 50 到 450,您可以使用extent=[-300,300,450,50]

    import matplotlib.pyplot as plt
    import numpy as np; np.random.seed(42)
    
    data = np.random.rand(10,10)
    
    fig, ax2 = plt.subplots()
    
    ax2.imshow(data, extent=[-300,300,450,50])
    
    plt.show()
    

    由于默认的相等纵横比 (aspect="equal"),现在不仅坐标轴坐标范围从 -300 到 300 和 50 到 450 变化,而且图像的形状现在也变为非二次方,即具有(450-50)/(300+300)=0.666 的方面。

    有一个tutorial on origin and extent 可用,它也解释了这一点,此外还阐明了如何确定和操纵轴相对于图像数据的方向。

    【讨论】:

      猜你喜欢
      • 2012-04-01
      • 2012-10-23
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 2014-04-26
      • 2015-10-14
      • 1970-01-01
      相关资源
      最近更新 更多