Basemap属性错误求助:'AxesSubplot'无'get_axis_bgcolor'属性
解决Basemap与Matplotlib版本冲突导致的AttributeError问题
这个问题我之前踩过坑!本质是你的Basemap版本(1.0.7)和Matplotlib版本(2.2.0)不兼容导致的:
Matplotlib从2.0版本开始就弃用了get_axis_bgcolor()方法,换成了get_facecolor(),但Basemap 1.0.7还是在使用旧的API调用,所以触发了这个错误。
下面给你几个可行的解决办法:
升级Basemap到兼容版本
Basemap 1.2.0及以上版本已经修复了这个兼容性问题,如果你用conda环境,可以直接执行:conda install basemap=1.2.0要是用pip的话,更推荐搭配conda安装来避免依赖冲突,注意Basemap在PyPI的关联包为
basemap-data-hires。降级Matplotlib到2.0.x版本
如果你不想升级Basemap,可以把Matplotlib降到2.0系列的稳定版,比如:pip install matplotlib==2.0.2这个版本和Basemap 1.0.7完全兼容,不会再出现API不匹配的问题。
临时修改Basemap源码(应急用)
要是你既不能升级也不能降级,可以手动修改Basemap的源码:- 找到你Python环境中Basemap的安装目录,比如
Lib/site-packages/mpl_toolkits/basemap - 打开
basemap.py文件,搜索所有get_axis_bgcolor,替换成get_facecolor - 同样,把
set_axis_bgcolor替换成set_facecolor
这个方法能快速解决报错,但不推荐长期使用,因为后续包更新可能会覆盖你的修改。
- 找到你Python环境中Basemap的安装目录,比如
修改完之后再运行你的代码,应该就能正常显示带红色大陆的正交投影地图啦!
内容的提问来源于stack exchange,提问作者Brooke Richardson
相关产品推荐
相关产品推荐

