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

Plotly Express中如何放大悬浮标签并实现Mapbox悬浮描述多行显示

解决Plotly Express Scatter Mapbox的Hover Label截断与尺寸调整问题

问题分析

你遇到的两个核心问题:

  1. 多行字符串形式的description字段在hover中横向截断
  2. 无法通过update_layout/update_traces调整hover label的尺寸

解决方案

1. 修复多行文本截断问题

Plotly默认不会自动解析原始字符串中的换行符,需要将其替换为HTML的<br>标签,让hover内容按换行显示,避免横向挤压截断。

2. 自定义Hover Label尺寸

在hoverlabel配置中直接添加width和height参数,即可指定标签的最大宽高;同时设置namelength=-1避免字段名称被截断。

3. 可选:自定义Hover模板

通过hovertemplate完全控制hover内容的显示格式,进一步优化排版效果。

修改后的完整代码

import numpy as np
import pandas as pd
import plotly.express as px

df = pd.read_csv(r"C:\Users\devas\Downloads\haunted_places.csv")

# 将description中的换行符替换为HTML换行标签,确保多行显示
df['description'] = df['description'].str.replace('\n', '<br>')

fig = px.scatter_mapbox(
    df,
    lat='latitude',
    lon='longitude',
    width=1920,
    height=1080,
    hover_data=["description"],
    # 自定义hover模板,隐藏默认trace名称,优化显示
    hovertemplate="<b>Description:</b><br>%{customdata[0]}<extra></extra>",
    zoom=5
)

# 配置hoverlabel样式与尺寸
fig.update_layout(
    hoverlabel=dict(
        bgcolor="white",
        font=dict(size=12, family="Arial", color="black"),
        align="left",
        width=450,  # 设置hover标签的宽度
        height=300,  # 设置hover标签的高度,内容超出会自动显示滚动条
        namelength=-1  # 禁用字段名截断
    ),
    mapbox_style="open-street-map",
    mapbox_center={"lat": 39.8283, "lon": -98.5795}
)

fig.show()

关键说明

  • 换行符替换:确保原始多行文本在hover中正确换行,避免单行过长导致横向截断。
  • Hoverlabel尺寸:width和height直接控制标签的最大可视范围,内容超出时会自动生成垂直滚动条,保证所有内容都能被查看。
  • Hovertemplate:通过自定义模板可以灵活调整hover内容的结构,<extra></extra>用于隐藏Plotly默认添加的trace标识,让界面更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:40:35