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

Jupyter Notebook中使用mplleaflet:notebook模式下如何消除空白?

解决mplleaflet在%matplotlib notebook模式下的空白问题

这个问题确实挺恼人的——我之前也被这个交互式绘图模式和mplleaflet的冲突折腾过几次,总结了几个实用的解决办法:

方法1:关闭当前Notebook绘图轴再显示地图

%matplotlib notebook会创建一个交互式的绘图轴,这个轴会和mplleaflet生成的地图叠加产生空白。你可以在调用mplleaflet.display()之前关闭当前的轴,这样就能避免多余的画布占位:

import matplotlib.pyplot as plt
import mplleaflet

# 你的绘图代码,比如:
plt.plot([1,2,3], [4,5,6])

# 先关闭当前的notebook轴
plt.close()
# 再显示地图
mplleaflet.display()

方法2:设置极小尺寸的画布

既然空白来自notebook模式下的matplotlib画布,你可以直接把画布尺寸设得极小,让它几乎看不见:

import matplotlib.pyplot as plt
import mplleaflet

# 创建一个极小尺寸的画布
fig, ax = plt.subplots(figsize=(0.1, 0.1))
# 你的绘图代码,比如:
ax.plot([1,2,3], [4,5,6])

# 显示地图
mplleaflet.display(fig=fig)

这样生成的空白区域会被压缩到几乎可以忽略的程度。

方法3:临时切换到inline模式处理地图

如果你的Notebook里既有交互式绘图需求,又需要用mplleaflet,可以在绘制地图的单元格单独切换到%matplotlib inline,用完再切回notebook模式:

# 地图单元格
%matplotlib inline
import matplotlib.pyplot as plt
import mplleaflet

plt.plot([1,2,3], [4,5,6])
mplleaflet.display()

然后在后续需要交互式绘图的单元格里再切换回来:

%matplotlib notebook
# 继续你的交互式绘图代码
plt.plot([1,3,2], [6,4,5])
plt.show()

为什么会出现空白?

本质原因是%matplotlib notebook会在单元格中插入一个交互式的Jupyter Widget画布,而mplleaflet是把matplotlib图形转换成Leaflet地图嵌入到单元格里——这两个画布同时存在就会产生多余的空白区域,我们的解决思路就是避免这两个画布同时显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:47:05