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

如何在Plotly带状图(strip plot)中批量添加带悬浮标签的短线?

Plotly带状图批量添加带独立悬浮标签的短线

问题

我需要在Plotly带状图里添加多条短线,要求能自动适配新增分类(实际场景分类多达10个),且每条线要有独立的悬浮标签。目前手动写了两条线,但分类多了手动维护太麻烦,现有代码如下:

import plotly.express as px

df = px.data.tips()
fig = px.strip(df, y="total_bill", x="day")

fig.update_layout(shapes=[dict(type='line', x0=.1, y0=30, x1=.15, y1=30,
                               xref='paper', yref='y',
                               line_width=3, line_color='red'),
                          dict(type='line', x0=.4, y0=30, x1=.45, y1=30,
                               xref='paper', yref='y',
                               line_width=3, line_color='red')
                         ])

fig.show()

带状图

解决方法

直接用shapes无法添加悬浮标签,且手动编写坐标效率极低。可以通过自动计算分类位置+用Scatter模拟线段实现批量生成和独立悬浮效果:

完整代码

import plotly.express as px
import plotly.graph_objects as go

df = px.data.tips()
fig = px.strip(df, y="total_bill", x="day")

# 可按需扩展的短线配置:y值+悬浮文本
line_configs = [
    {"y_val": 30, "hover_label": "参考线1: 消费阈值30"},
    {"y_val": 25, "hover_label": "参考线2: 平均消费25"},
    {"y_val": 35, "hover_label": "参考线3: 高消费阈值35"}
]

# 获取所有分类,计算每个分类在paper坐标系的宽度
categories = df["day"].unique()
cat_count = len(categories)
cat_paper_width = 1 / cat_count

# 遍历每个分类,批量生成短线
for cat_idx, _ in enumerate(categories):
    # 计算当前分类的中心x坐标(paper坐标系)
    cat_center_x = (cat_idx + 0.5) * cat_paper_width
    # 短线左右偏移量,控制长度
    line_offset = 0.02
    
    for config in line_configs:
        fig.add_trace(go.Scatter(
            x=[cat_center_x - line_offset, cat_center_x + line_offset],
            y=[config["y_val"], config["y_val"]],
            mode="lines",
            line=dict(color="red", width=3),
            hoverinfo="text",
            hovertext=config["hover_label"],
            showlegend=False
        ))

fig.show()

关键说明

  • 自动适配分类:通过分类数量计算每个分类在paper坐标系的宽度和中心位置,无需手动编写x0/x1坐标
  • 独立悬浮标签:用go.Scatter的lines模式替代shapes,直接通过hovertext设置每条线的悬浮内容
  • 灵活扩展:新增分类或短线时,仅需修改line_configs或添加分类数据,代码自动适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:02:01