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

使用Scattergeo绘制经纬度坐标连线时如何添加悬停文本?

问题解答

完全可以实现,这是Plotly的Scattergeo原生支持的能力,不需要额外的第三方工具。

实现逻辑

你只需要按如下规则组织数据即可:

  • 把每一条航线的坐标拆成「起点经纬度 → 终点经纬度 → 空值」的序列,所有航线的序列拼接后统一传给lon、lat参数,空值的作用是分隔不同航线,避免独立航线被连成一条连续的线
  • 每一条航线对应的两个坐标点(起点、终点)都绑定相同的hover文本,空值对应的文本位可随意填空,不会触发展示
  • 配置hoverinfo = 'text'、hoveron = 'points+fills'即可实现悬停在航线任意位置都展示对应文本的效果

代码示例

import plotly.graph_objects as go

# 你的航线数据,可按实际业务替换
flight_routes = [
    {"start_lon": -73.7781, "start_lat": 40.6413, "end_lon": -122.3790, "end_lat": 37.6213, "hover_label": "JFK-SFO/38 flights"},
    {"start_lon": -118.4085, "start_lat": 33.9428, "end_lon": -87.9073, "end_lat": 41.9742, "hover_label": "LAX-ORD/45 flights"}
]

lons_list = []
lats_list = []
hover_texts = []

for route in flight_routes:
    # 追加单条航线的坐标序列
    lons_list.extend([route["start_lon"], route["end_lon"], None])
    lats_list.extend([route["start_lat"], route["end_lat"], None])
    # 绑定对应hover文本
    hover_texts.extend([route["hover_label"], route["hover_label"], ""])

fig = go.Figure()
fig.add_trace(go.Scattergeo(
    lon = lons_list,
    lat = lats_list,
    mode = "lines",
    line = dict(width = 2, color = "#1f77b4"),
    text = hover_texts,
    hoverinfo = "text",
    # 支持悬停在线段和点位上都触发展示
    hoveron = "points+fills"
))

# 按需配置地图底图、投影等参数即可
fig.update_layout(geo = dict(scope = "north america"))
fig.show()

补充说明

如果需要展示弧线(大圆航线)效果不需要手动计算坐标,Scattergeo会默认按球面投影自动生成弧线,不会影响hover文本的绑定逻辑。你也可以根据需求给不同航线设置差异化的线条颜色、宽度属性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 03:03:04