python - 应用 cartopy 变换时图像倾斜

标签 python image matplotlib transformation cartopy

我正在使用 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])

这是使用 PlateCarree 绘制的图: enter image description here

切换到墨卡托后,除了 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 已经失去了清晰感,并且随着变换而变得倾斜,最神秘的是,它已经将角切换到了情节的左上角。现在看起来像这样: enter image description here

有谁知道如何在不扭曲该图像的情况下更改绘图的投影?我真正需要做的是确保图像的角位于转换后的坐标系统中绘图的角上,但使图像的其余位置独立于坐标系。我正在考虑是否可以将图像单独放在自己单独的子图中,而不是尝试将该子图直接放置在主图之上。不过,这似乎是一个非常糟糕的解决方案。谢谢!

最佳答案

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

关于python - 应用 cartopy 变换时图像倾斜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38597656/

相关文章:

python - Docker 和 Python virtualenv 有什么区别?

python - 使用 Python/Django 从 html 获取第一张图片

python - 如何访问自定义 prop_cycle 颜色?

python - 使用 matplotlib 绘制 PNG 文件时反转颜色

python - 如何克隆列表以使其在分配后不会意外更改?

python - 车辆路径问题如何用or-tools只让部分团回车场?

javascript - 为什么这个按钮不能删除这个图像

css - 简单的 CSS 图像悬停问题

python - 如何减少 matplotlib 等高线图中的小数位数

python - 尝试运行 jupyter notebook 时模块 'attr' 中的错误