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)

使用这些点设置轴的范围

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

这是使用 PlateCarree 的情节: 在此处输入图像描述

切换到墨卡托后,除了徽标之外,我的一切都运行良好。我已将转换关键字参数添加到图像绘图线,所以现在它显示为:

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

但是现在这个标志已经失去了它的清晰度,并且随着变形而变得歪斜,而且最神秘的是,它已经将角落切换到了情节的左上角。现在看起来像这样: 在此处输入图像描述

有谁知道如何在不歪斜此图像的情况下更改绘图的投影?我真正需要做的是确保图像的角落在转换后的坐标系中的绘图角落,但让图像的其余部分与坐标系无关。我正在考虑可能将图像单独放在自己单独的子图中,而不是尝试将那个子图直接放在主要的顶部。不过,这似乎是一个非常糟糕的解决方案。谢谢!

4

1 回答 1

3

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

于 2016-07-26T20:04:08.720 回答