【发布时间】:2018-07-22 06:53:37
【问题描述】:
在导入图像和来自 numpy.我将图表的范围更改为双倍最大范围(即 20x20 矩阵的 40x40),但它们看起来仍然相同。在这种情况下,我找不到任何关于真正程度的文档。它是复制我的数据、对其进行插值还是其他一些功能?
【问题讨论】:
标签: python matplotlib
在导入图像和来自 numpy.我将图表的范围更改为双倍最大范围(即 20x20 矩阵的 40x40),但它们看起来仍然相同。在这种情况下,我找不到任何关于真正程度的文档。它是复制我的数据、对其进行插值还是其他一些功能?
【问题讨论】:
标签: python matplotlib
我想你在这里询问imshow 的extent 关键字参数。
这用于定义轴中图像的单位。默认情况下,即不设置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 可用,它也解释了这一点,此外还阐明了如何确定和操纵轴相对于图像数据的方向。
【讨论】: