【发布时间】:2012-09-10 22:55:28
【问题描述】:
一个非常相似的问题,用同样的方法解决:how to use 'extent' in matplotlib.pyplot.imshow
我有一个描述地理轨迹的地理坐标列表(“轨迹日志”)。此外,我有办法获得跨越跟踪日志覆盖范围的图像,我知道图像角落的“地理坐标”。
我的情节目前看起来像这样(注意刻度 - x=longitudes, y=latitudes, in UTM, WGS84):
然后假设我知道下图的角坐标(或没有蓝色轨迹的版本),并且想绘制它以使其适合绘图的坐标系。
我该怎么做?
(作为旁注,如果重要的话,我打算使用瓷砖)
根据 Joe Kington 的评论(等待他的实际答案以便我可以接受),以下代码按预期工作,提供了一个可平移和可缩放的固定方面“地理参考”图块,我可以在该图块上进行绘图跟踪日志:
import matplotlib.pyplot as plt
import Image
import numpy
imarray = numpy.asarray(Image.open('map.jpg'))
plt.plot([0,1], [0,1], 'o', c='red', ms=20) ## some reference circles for debugging
plt.imshow(imarray, extent=[0,1,0,1]) ## some random map whose corners have known coordinates
plt.axis('equal')
plt.show()
【问题讨论】:
-
您是在问如何投影它(您提到了 UTM 和地理坐标)还是只是如何绘制具有指定范围的图像? (如果是后者,只需使用
extentskwarg 到imshow。) -
@JoeKington 我只想绘制,因为图像已经“投影”(它的网格与绘图网格相同)。我看看
extents,但如果你能发布一个有效的答案,我很乐意接受! -
据我所见,
extents将轴调整为图像,而不是相反。我正在按照这里的建议尝试使用 OffsetImage:stackoverflow.com/a/4860777/401828 -
不,它只是在绘图后调用
axis(image),这使它看起来像那样。只需将aspect = "auto"指定为 imshow 并先绘制图像,或者在绘制图像后重置轴的限制。 (首先绘制它是最简单的)。我是用手机拍的,否则我会举一个完整的例子。偏移图像适用于您希望图像大小位于显示坐标中的情况。无论如何,希望能有所帮助! -
@JoeKington 它有帮助,但我也需要时间来完全掌握它。现在谢谢!
标签: image plot matplotlib cartography