应用折纸转换时的图像偏斜

时间:2016-07-26 18:46:22

标签: python image matplotlib transformation cartopy

我正在使用cartopy和matplotlib进行一些绘图,最近我使用了PlateCarree转换,但我改为Mercator,因为路易斯安那州有点过于紧张。在切换之前,我在左下角显示了一个徽标,使用这两行代码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)

使用这些点设置轴的范围

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

这是使用PlateCarree的情节: enter image description here

切换到墨卡托后,除了徽标外,我已经完成了所有工作。我已将transform关键字参数添加到图像绘制线,现在它显示为:

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

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

1 个答案:

答案 0 :(得分:3)

如果在轴坐标而不是数据坐标中绘制图像徽标,则可能会获得更好的效果。您可以使用DLL变换,并在轴坐标中指定范围(左下角为[0,0],右上角为[1,1])。