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

使用mplleaflet.display()报错:AttributeError: 'XAxis' object has no attribute '_gridOnMajor'

解决mplleaflet与Matplotlib版本兼容导致的AttributeError问题

错误原因

这个AttributeError: 'XAxis' object has no attribute '_gridOnMajor'错误,是因为你当前使用的Matplotlib版本过高,mplleaflet库的代码还在依赖Matplotlib已移除的内部属性_gridOnMajor,两者版本不兼容导致的。

解决方案

方案1:降级Matplotlib到兼容版本

执行以下命令安装与mplleaflet兼容的Matplotlib版本:

pip install matplotlib==3.3.4

重新运行你的代码即可正常生成交互式地理散点地图。

方案2:修改mplleaflet源码适配新版本Matplotlib

如果不想降级Matplotlib,可以手动修改mplleaflet的核心文件:

  1. 找到mplleaflet的安装目录(一般在Python环境的Lib\site-packages\mplleaflet下)
  2. 打开leaflet.py文件,找到所有调用ax.xaxis._gridOnMajor或ax.yaxis._gridOnMajor的代码行
  3. 将这些代码替换为Matplotlib新版本的对应判断方式:
    • 把ax.xaxis._gridOnMajor替换为ax.xaxis._major_tick_kw.get('gridOn', False)
    • 把ax.yaxis._gridOnMajor替换为ax.yaxis._major_tick_kw.get('gridOn', False)
      保存文件后重新运行代码即可。

关于移除mplleaflet.display()后图表不符的说明

直接调用plt.scatter生成的是普通笛卡尔坐标系的散点图,没有将经纬度数据映射到地理地图的坐标系上。而mplleaflet.display()的作用是把Matplotlib的图表转换成基于Leaflet的交互式地理地图,所以移除后自然看不到预期的地理散点效果。

内容的提问来源于stack exchange,提问作者dishum

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:10:28