Basemap多边形填充报错:get_axis_bgcolor函数2.0版本已弃用,填充色不显示
解决Basemap多边形填充报错与颜色不显示问题
嘿,我来帮你搞定这个Basemap的问题!你遇到的get_axis_bgcolor function was deprecated in version 2.0报错,是因为Matplotlib 2.0之后废弃了这个方法,而旧版Basemap还在调用它;至于填充颜色不显示,大概率是代码里的多边形绘制逻辑有疏漏。下面分两步解决:
1. 修复废弃函数报错
方法一:升级兼容版Basemap
你已经尝试过conda install -c conda-forge basemap,但如果还是报错,建议安装完整的兼容包,确保覆盖最新的Matplotlib适配:
conda install -c conda-forge basemap basemap-data-hires
conda-forge维护的Basemap版本通常会及时修复这类Matplotlib兼容问题。
方法二:手动修改源码(应急方案)
如果升级后问题依旧,可以直接修改Basemap的源码文件:
- 找到Basemap的安装路径,比如Python环境下的
Lib/site-packages/mpl_toolkits/basemap目录 - 打开
basemap.py文件,搜索get_axis_bgcolor,把所有ax.get_axis_bgcolor()替换成ax.get_facecolor() - 保存文件后重启Python环境,报错就会消失
2. 确保多边形颜色正常填充
下面给你一个完整的可运行代码示例,你可以参考调整自己的代码:
import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap from matplotlib.patches import Polygon # 创建Basemap实例,根据你的数据范围调整投影和边界参数 fig, ax = plt.subplots(figsize=(10, 8)) m = Basemap(llcrnrlon=你的最小经度值, llcrnrlat=你的最小纬度值, urcrnrlon=你的最大经度值, urcrnrlat=你的最大纬度值, projection='lcc', lat_1=33, lat_2=45, lon_0=100, ax=ax) # 读取shapefile(注意传入不带.shp后缀的文件名) m.readshapefile('你的shapefile文件名', 'shp_features', drawbounds=True) # 遍历多边形并设置填充样式 for info, shape in zip(m.shp_features_info, m.shp_features): # 创建Polygon对象,自定义填充色、边框色和透明度 poly = Polygon(shape, facecolor='#88c999', edgecolor='#333333', alpha=0.7) ax.add_patch(poly) # 显示图形 plt.title('多边形填充效果示例') plt.show()
关键注意点:
- 确保
readshapefile的第二个参数(比如示例里的shp_features)是唯一标识,后续遍历要对应m.xxx_info和m.xxx(xxx就是你设置的第二个参数) facecolor要设置有效的颜色值(支持十六进制、颜色名称或RGB元组)- 必须通过
ax.add_patch()把Polygon对象添加到坐标轴上,这是很多人容易漏掉的核心步骤 - 如果还是不显示,检查Basemap的投影范围是否完全包含你的shapefile数据,避免多边形被画到可视区域外
内容的提问来源于stack exchange,提问作者Ethan Huang
相关产品推荐
相关产品推荐

