扩展在matplotlib中真正发挥了什么作用?

时间:2018-07-22 06:53:38

标签: python matplotlib

在导入图像和numpy的随机数据之后,我最近一直在使用matplotlib。我将图表的范围更改为最大范围的两倍(即20x20矩阵为40x40),但它们看起来还是一样。在这种情况下,我找不到任何有关实际范围的文档。它会复制我的数据,对其进行插值还是其他一些功能?

1 个答案:

答案 0 :(得分:1)

我想您在这里查询imshow的{​​{1}}关键字参数。

这用于定义轴中图像的单位。默认情况下,即未设置extent时,单位正好是数组的像素。例如。如果您有10x10像素的图像,则范围为extent

(-0.5, 9.5, 9.5, -0.5)

enter image description here

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

但是,您可能想为图像使用不同的单位。可能是您对数据进行了校准,或者数据是使用不同单位的计算结果。在这种情况下,可以设置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) 以确定图像将在轴单位的2D空间中的哪个位置。例如。如果您希望图像在x方向上从-300扩展到300,在y方向上从50扩展到450,则可以使用extent

extent=[-300,300,450,50]

enter image description here

由于采用默认的等高比(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() ),不仅轴坐标现在更改为-300至300和50至450,而且图像的形状现在也不再是二次方的,即具有aspect="equal"的一个方面。

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