Matplotlib imshow偏移以匹配轴?

21
我正在使用matplotlib.pyplot.scatter绘制一堆UTM坐标。我还有一张背景航空照片,我知道它的范围完全匹配图形。当我绘制我的数据并设置轴时,可以正确显示散点图。如果使用imshow绘制航空照片,则会使用像素数作为轴位置。我需要将图像(numpy数组)移动到其正确的UTM位置。有什么建议吗?我在matplotlib和numpy方面相对较新。
例如:我知道图像的左上角(imshow坐标:0,0)具有UTM坐标(269658.4,538318.2)。如何告诉imshow同样的事情?
我也应该说我调查了Basemap,但它似乎还没有完全支持UTM。我的研究区域非常小。
1个回答

33

你需要使用extent关键字参数来调用imshow函数。

这里有一个快速的例子:

import numpy as np
import matplotlib.pyplot as plt

# Random points between 50000 and 51000
x, y = 1000 * np.random.random((2, 10)) + 50000

# A 10x10 "image"...
image = np.arange(100).reshape((10,10))

# In a lot of cases, image data will be "flipped" vertically, so you may need 
# use the `origin` kwarg, as well (or just swap the ymin and ymax ordering).
plt.imshow(image, extent=[x.min(), x.max(), y.min(), y.max()])
plt.plot(x, y, 'ro')

plt.show()

输入图像说明


1
谢谢!这正好做到了我想要的!我不确定为什么我在API中找不到那个关键字。 - cds-mewald
1
在各种matplotlib函数的关键字参数中很容易迷失方向。不过,文档中有详细说明,我保证!:) 无论如何,很高兴能够帮助。 - Joe Kington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接