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

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()

方法二:自定义叠加文本标注图层(按需灵活控制)

如果官方样式的标注不符合需求(比如要自定义字体、仅显示特定区域名称),可以自行准备地理数据,通过文本轨迹直接渲染标注:

  1. 准备包含名称、中心经纬度的数据集(CSV/GeoJSON格式均可)
  2. 使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:51:34