plotly.express.choropleth_mapbox地图如何添加比例尺和指北针
plotly.express.choropleth_mapbox 比例尺与指北针实现方案
plotly.express.choropleth_mapbox 没有提供开箱即用的比例尺、指北针传参接口,直接调用绘图函数无法生成这两个组件,这是此前尝试失败的核心原因,可行实现方案分两类:
方案1:启用Mapbox原生控件(成本最低,优先推荐)
choropleth_mapbox的底图基于Mapbox渲染层实现,可以直接通过布局配置开启Mapbox自带的对应控件,不需要额外开发:
import plotly.express as px # 替换为你自己的业务绘图逻辑 fig = px.choropleth_mapbox( # 传入你的数据集、地理匹配字段、填色字段、色阶等参数 ) fig.update_layout( mapbox = { "accesstoken": "你的个人Mapbox Access Token", "style": "carto-positron", # 可替换为你需要的底图样式 "zoom": 6, # 按需求设置初始缩放级别 "center": {"lat": 36, "lon": 108}, # 按需求设置初始地图中心点 # 开启距离比例尺 "scalecontrol": { "visible": True, "position": "bottom-left" # 支持自定义位置:左上/右上/左下/右下 }, # 开启指北针(罗盘) "bearing": 0, # 0代表初始状态正北朝上 "compass": {"visible": True, "position": "top-right"} }, margin = {"l":0, "r":0, "t":0, "b":0} # 去掉画布多余边距 ) fig.show()
注意:如果使用无需token的公开底图(如open-street-map),部分低版本plotly可能无法正常加载罗盘控件,建议配置个人Mapbox token后使用该方案。
方案2:自定义元素实现(适合高度定制化需求)
如果需要自定义比例尺、指北针的样式,不依赖Mapbox原生控件,可以通过plotly的画布元素能力手动添加:
- 指北针:准备好需要的指北针图片,通过
layout.images参数将图片固定在画布指定角落,设置图片位置不随地图平移、缩放变化 - 比例尺:根据当前地图的中心点纬度、缩放级别,换算画布固定像素长度对应的实际地理距离,通过
add_shape绘制刻度线段,搭配文本注解标注距离数值
该方案需要额外绑定地图缩放、平移事件,动态更新比例尺的数值和长度,交互场景下实现成本较高,适合静态出图需求使用。
内容的提问来源于stack exchange,提问作者Krisselack
相关产品推荐
相关产品推荐

