最近,我在导入图像和从numpy随机数据之后一直在处理matplotlib。我将图的范围改为双最大范围(即20x20矩阵的范围为40x40 ),但它们看起来还是一样的。在这种情况下,我找不到任何关于真正的程度的文档。它是复制我的数据,插值它,还是其他函数?
发布于 2018-07-22 09:58:32
我想您在这里询问的是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的一面。
有一个可用的extent,这也解释了这一点,此外,还阐明了如何确定和操纵图像数据的轴的方向。
https://stackoverflow.com/questions/51462728
复制相似问题