我正在使用 cartopy 和 matplotlib 进行一些绘图,最近我正在使用 PlateCarree 转换,但我更改为墨卡托转换,因为路易斯安那州对于我的喜好来说有点太压扁了。在切换之前,我使用这两行代码在左下角显示了一个 Logo logo = matplotlib.image.imread('/Users/ian/Desktop/M.png')
plt.imshow(logo, 范围 =(lon 偏移量 -1 + .25, lon - 偏移量 + .75, lat - 偏移量 + .25, lat - 偏移量 + 1 + .75), zorder=35)
使用这些点设置轴的范围
ax.set_extent([lon-offset-1, lon+offset+1, lat-offset, lat+offset])
切换到墨卡托后,除了 Logo 之外,一切都运行良好。我已将转换关键字参数添加到图像绘图线,所以现在它显示为:
plt.imshow(logo, extent =(lon-offset -1 +.25, lon - offset + .75, lat - offset + .25, lat - offset + 1 + .75), zorder=35, transform=ccrs.PlateCarree())
但现在 Logo 已经失去了清晰感,并且随着变换而变得倾斜,最神秘的是,它已经将角切换到了情节的左上角。现在看起来像这样:
有谁知道如何在不扭曲该图像的情况下更改绘图的投影?我真正需要做的是确保图像的角位于转换后的坐标系统中绘图的角上,但使图像的其余位置独立于坐标系。我正在考虑是否可以将图像单独放在自己单独的子图中,而不是尝试将该子图直接放置在主图之上。不过,这似乎是一个非常糟糕的解决方案。谢谢!
最佳答案
如果在轴坐标而不是数据坐标中绘制图像 Logo ,可能会获得更好的结果。您可以使用 ax.transAxes
转换来实现此目的,并指定轴坐标中的范围(左下角的 [0, 0],右上角的 [1, 1])。
关于python - 应用 cartopy 变换时图像倾斜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38597656/