2016-07-26 55 views
2

我正在做一些使用cartopy和matplotlib的绘图,而且我最近使用PlateCarree转换,但我更改为墨卡托,因为路易斯安那州因我的喜好太挤了一点。在此之前的开关,我在左下角显示的标识,使用的代码logo = matplotlib.image.imread('/Users/ian/Desktop/M.png') plt.imshow(logo, extent =(lon-offset -1 + .25, lon - offset + .75, lat - offset + .25, lat - offset + 1 + .75), zorder=35) 当应用cartopy转换时图像歪斜

这两条线当轴的程度用这些点

ax.set_extent([lon-offset-1, lon+offset+1, lat-offset, lat+offset]) 

这是什么剧情设置看起来像使用PlateCarree: enter image description here

切换到墨卡托后,我已经得到了一切工作,除了徽标。我已经添加了改造关键字参数在图像绘制线,所以现在有这么一句话:

plt.imshow(logo, extent =(lon-offset -1 +.25, lon - offset + .75, lat - offset + .25, lat - offset + 1 + .75), zorder=35, transform=ccrs.PlateCarree()) 

但现在的标志已经失去了它的脆度,并成为歪斜的改造,最神秘,它已切换的角落到情节的左上角。它现在看起来像这样: enter image description here

有谁知道我可以如何改变我的情节投影,而不会扭曲此图像?我真正需要做的是确保图像的角落位于变换坐标系中的图的角落,但保留图像的其余部分与坐标系无关。我正在考虑将图像单独放置在自己独立的子图中,而不是试图将该子图直接放置在主图上。看起来像一个非常糟糕的解决方案。谢谢!

回答

3

如果您将图像标志绘制在坐标轴上而不是数据坐标上,您可能会得到更好的结果。您可以使用ax.transAxes变换,并指定轴坐标(左下角[0,0],右上角[1,1])的范围。