Plotly(Python):如何在卫星地图上添加城市与国家名称
实现Plotly卫星地图直接显示国家/城市名称的方法
方法一:使用Mapbox官方带标注的卫星底图
Plotly的Mapbox支持直接调用Mapbox官方的预定义样式,其中satellite-streets-v12是卫星底图+街道/城市/国家标注的混合样式,完全符合你要的谷歌地图类似效果,无需额外添加图层。
示例代码:
import plotly.express as px # 用示例数据生成散点地图(可替换为你的业务数据) df = px.data.carshare() fig = px.scatter_mapbox(df, lat="centroid_lat", lon="centroid_lon", color="peak_hour", size="car_hours", zoom=10, height=600) # 关键:设置带标注的卫星底图样式 fig.update_layout(mapbox_style="satellite-streets-v12") fig.show()
方法二:自定义叠加文本标注图层(按需灵活控制)
如果官方样式的标注不符合需求(比如要自定义字体、仅显示特定区域名称),可以自行准备地理数据,通过文本轨迹直接渲染标注:
- 准备包含名称、中心经纬度的数据集(CSV/GeoJSON格式均可)
- 使用
Scattermapbox创建纯文本轨迹,设置mode="text"来显示名称
示例代码:
import plotly.graph_objects as go # 示例城市数据(替换为你的目标区域数据) city_list = [ {"name": "北京", "lat": 39.9042, "lon": 116.4074}, {"name": "上海", "lat": 31.2304, "lon": 121.4737}, {"name": "广州", "lat": 23.1291, "lon": 113.2644} ] # 创建文本标注轨迹 fig = go.Figure(go.Scattermapbox( lat=[city["lat"] for city in city_list], lon=[city["lon"] for city in city_list], text=[city["name"] for city in city_list], mode="text", textfont=dict(size=12, color="#ffffff", weight="bold") # 调整字体适配卫星底图 )) # 设置纯卫星底图+地图范围 fig.update_layout( mapbox_style="satellite", mapbox_zoom=3, mapbox_center={"lat": 35, "lon": 105}, height=600 ) fig.show()
注意事项
- 官方
satellite-streets-v12样式是最省心的方案,Mapbox已经优化了标注的排版、层级和适配性 - 自定义标注时要注意字体颜色与卫星底图的对比度,避免被底图元素遮挡
- 使用Mapbox样式需要确保配置了有效的Mapbox访问令牌(免费额度足够个人开发使用)
内容的提问来源于stack exchange,提问作者Elise1369
相关产品推荐
相关产品推荐

