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

如何自定义plotly.graph_objects.Scattergeo的悬浮提示框与地图背景?

解决Plotly ScatterGeo悬浮提示框与地图背景优化问题

一、自定义悬浮提示框(添加importValue)

你当前的hovertemplate仅调用了text字段(对应国家名称),要加入importValue可通过以下两种方式实现:

方法1:利用customdata传递数据

通过customdata字段传入importValue,再在hovertemplate中引用该值:

testFig = go.Figure()

testFig.add_trace(go.Scattergeo(
    lon = data['lon'],
    lat = data['lat'],
    text = data['country'],
    # 传递进口额数据到customdata
    customdata = data['importValue'],
    marker = dict(
        size = data['importValue']/1000000,  # 注意原代码中写的data['value']需修正为importValue
        sizemode = 'area'
    ),
    # 自定义提示框内容,格式化数值显示
    hovertemplate = '<b>%{text}</b><br>进口额: %{customdata:,.2f}<extra></extra>'
))
  • 说明:%{customdata:,.2f}用于给数值添加千分位分隔符并保留两位小数;<extra></extra>用来隐藏Plotly默认的额外信息(如trace名称)。

方法2:直接拼接text字段内容

先构造包含国家名称和进口额的复合文本列,再传入text字段:

# 生成包含双信息的提示文本
data['hover_text'] = data.apply(lambda row: f"{row['country']}<br>进口额: {row['importValue']:,.2f}", axis=1)

testFig = go.Figure()

testFig.add_trace(go.Scattergeo(
    lon = data['lon'],
    lat = data['lat'],
    text = data['hover_text'],
    marker = dict(
        size = data['importValue']/1000000,
        sizemode = 'area'
    ),
    hovertemplate = '%{text}<extra></extra>'
))

二、修改地图背景样式

通过update_geos()方法可自定义地图的背景色、陆地颜色、海岸线等元素:

testFig.update_geos(
    bgcolor = '#f0f8ff',  # 设置地图背景色
    landcolor = '#e6e6e6',  # 设置陆地填充色
    coastlinecolor = '#333333',  # 设置海岸线颜色
    coastlinewidth = 0.8,  # 设置海岸线宽度
    countrycolor = '#666666',  # 设置国家边界颜色
    showframe = False,  # 隐藏地图框架
    showcoastlines = True,
    showcountries = True
)

# 保留原布局设置
testFig.update_layout(autosize=False,
                      width=700,
                      height=700)
testFig.show()
  • 可根据需求调整颜色值(支持十六进制、RGB值、标准颜色名称),比如使用深色背景搭配浅色陆地,能获得更突出的视觉效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:22:55