You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的源码文件:

  1. 找到Basemap的安装路径,比如Python环境下的Lib/site-packages/mpl_toolkits/basemap目录
  2. 打开basemap.py文件,搜索get_axis_bgcolor,把所有ax.get_axis_bgcolor()替换成ax.get_facecolor()
  3. 保存文件后重启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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:54:18