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

如何像散点图一样为Plotly箱线图添加悬停文本标签?

Plotly 箱线图直接传入text参数默认不会自动绑定到悬停内容,通过自定义悬停模板即可实现需求,两种常用场景的实现方式如下:

方案1:仅异常值显示对应销售人员信息

适配「查看异常值对应采购记录销售人员」的核心需求,保留默认箱线图仅突出异常值的样式,只需要给go.Box增加hovertemplate参数,把销售人员字段嵌入悬停内容即可。
修正后的可运行代码:

import plotly.offline as pyo
import plotly.graph_objs as go
import pandas as pd

purchase={'date':['11/03/2021','12/03/2021','14/03/2021','11/03/2021'],
          'price':[300, 400,200, 200],
          'currency':['eur', 'usd','usd','usd'],
          'qty':[200, 300, 400, 500],
          'salesman':['AC', 'BC', "CC", 'DC']}
pur=pd.DataFrame(purchase)

x = pur['date']
y = pur['price']

data = [
    go.Box(
        y=y,
        x=x,
        text=pur['salesman'],
        # 自定义悬停内容格式,<extra></extra>用于隐藏悬停框默认的轨迹名后缀
        hovertemplate='日期: %{x}<br>价格: %{y}<br>销售人员: %{text}<extra></extra>'
    )
]
layout = go.Layout(
    title = '带异常值销售人员信息的箱线图'
)
fig = go.Figure(data=data, layout=layout)
fig.show()

运行后鼠标悬停在箱体、须线、中位数线等统计元素上时,会展示对应日期分组的价格统计值;悬停在异常值点上时,会自动展示该条异常记录对应的销售人员信息。

方案2:所有原始数据点悬停都显示销售人员信息

如果需要展示所有采购记录点,而非仅显示异常值,只需要增加boxpoints相关参数,开启全量点显示即可:

data = [
    go.Box(
        y=y,
        x=x,
        text=pur['salesman'],
        boxpoints='all', # 显示所有原始数据点
        jitter=0.3, # 增加横向抖动避免同价位点重叠
        pointpos=0, # 控制点相对于箱体的横向位置
        hovertemplate='日期: %{x}<br>价格: %{y}<br>销售人员: %{text}<extra></extra>'
    )
]

该模式下所有原始采购点都会渲染在图上,任意点悬停都能看到对应销售人员信息。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:06:27