如何自定义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
相关产品推荐
相关产品推荐

