Basemap绘图仅显示一半南极洲问题排查咨询
Basemap绘制仅显示一半南极洲的解决方案
该问题是Basemap 1.2.2版本的已知兼容问题,与安装包本身无关——Basemap早已停止维护,你当前环境使用的numpy 1.22.3、matplotlib 3.5.2版本都超出了其最后适配的版本范围,浮点计算、路径渲染逻辑的变动会触发南极区域的岸线裁剪bug,按以下优先级尝试方案即可:
- 最快临时修复:初始化Basemap实例时,不要将南纬边界设为-90,手动调整为-89.999,规避跨极点的路径裁剪异常,示例代码如下:
from mpl_toolkits.basemap import Basemap # 以圆柱投影为例,其他投影类型同理调整南边界参数即可 m = Basemap( projection='cyl', llcrnrlon=-180, llcrnrlat=-89.999, # *不要设置为-90* urcrnrlon=180, urcrnrlat=90, resolution='l' ) m.drawcoastlines()
90%以上的场景调整这个参数后就能正常显示完整南极洲。
- 长期稳定修复:将依赖库降级到Basemap 1.2.2官方适配的版本范围,执行以下命令安装对应版本即可:
pip install numpy==1.21.6 matplotlib==3.3.4
降级完成后不需要修改原有业务代码,使用默认参数也能正常渲染完整南极大陆。
- 不降级依赖的备选方案:手动补绘被裁剪的南极大陆多边形,在执行
drawcoastlines()方法后,手动读取Basemap自带GSHHS岸线数据中的南极洲多边形,补绘缺失的部分即可,操作相对繁琐,非必要不推荐。
内容的提问来源于stack exchange,提问作者Weiss
相关产品推荐
相关产品推荐

