登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 墨家大宝 于 2023-1-25 11:47 编辑
matplotlib嵌套南海子图 二维可视化的最高境界是可以控制每一个像素的每一个通道。——我瞎说的
简介 目前大多数教程中用matplotlib在中国地图右下角嵌套南海子图主要方案是通过fig.add_axes方法,在指定位置绘制指定宽高的新图轴。这种方案可行但存在两个问题:
- 大陆图轴和南海图轴在代码逻辑上是独立的:一旦使用会挤压图轴的操作如fig.colorbar,大陆图轴在画布上的位置大小发生改变,但在此之前绘制的南海图轴不会跟随移动。这导致该方案下南海图轴需要在最后绘制,一行一列的图还勉强不算太麻烦,但若是要在一张图上画上个几行几列,必须先for循环绘制所有大陆图轴,再绘制颜色图例、标题等等,最后再用先for循环绘制所有南海图轴,很不优雅。
- 由于地图投影问题,最终图轴的宽高不一定是创建图轴时所指定的宽高。这导致若不在绘制南海图轴前通过投影关系计算好比例,最终两个图轴的右下两条边界可能不会重合,很不优雅。
我琢磨出一种优雅的方法,可以优雅地解决这两个问题,核心方法为ax.inset_axes。结合cartopy需要matplotlib>=3.6.x。
论坛贴代码啥的太麻烦,直接贴链接了: matplotlib嵌套南海子图 (qq.com)
|