我设法绘制了我的数据,并希望为其添加背景图像(地图)。 数据由长/纬度值绘制,我有图像的三个角(左上角,右上角和左下角)的长/纬度值。
我试图弄清楚如何在imshow中使用'extent'选项。但是,我发现的例子没有解释如何为每个角分配x和y(在我的例子中,我有三个角的信息)。
将图像添加到图中时,如何为图像指定三个角的位置?
由于
答案 0 :(得分:35)
范围定义水平和垂直值的图像最大值和最小值。它需要四个值:extent=[horizontal_min,horizontal_max,vertical_min,vertical_max]
。
假设你沿水平轴有经度,那么你将采用extent=[longitude_top_left,longitude_top_right,latitude_bottom_left,latitude_top_left]
。 longitude_top_left和longitude_bottom_left应该相同,latitude_top_left和latitude_top_right应该相同,并且这些对中的值是可互换的。
如果您的图像的第一个元素应该在左下角绘制,那么也可以使用origin='lower'
imshow选项,否则“上限”默认值就是您想要的。
答案 1 :(得分:10)
以下是基于http://matplotlib.org/examples/pylab_examples/image_demo3.html显示使用范围的示例。
#!/usr/bin/env python
from pylab import *
try:
from PIL import Image
except ImportError, exc:
raise SystemExit("PIL must be installed to run this example")
import matplotlib.cbook as cbook
datafile = cbook.get_sample_data('ada.png')
h = Image.open(datafile)
dpi = rcParams['figure.dpi']
figsize = h.size[0]/dpi, h.size[1]/dpi
figure(figsize=figsize)
ax = axes([0,0,1,1], frameon=False)
ax.set_axis_off()
ax.set_xlim(0,2)
ax.set_ylim(0,2)
im = imshow(h, origin='upper',extent=[-2,4,-2,4]) # axes zoom in on portion of image
im2 = imshow(h, origin='upper',extent=[0,.5,0,.5]) # image is a small inset on axes
show()
如果您没有设置轴限制,它们将成为您的范围和范围。然后似乎没有任何影响。