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

Plotly Express如何为多折线图的各数据点添加数值标注

Plotly 多折线图标注同色数值的实现方案

可以通过两种常见方案实现需求,优先推荐第一种原生支持的实现方式,无需手动处理颜色匹配逻辑:

方案1:宽表转长表(Plotly 原生支持)

Plotly Express 原生对长表结构支持度更高,转长表后直接指定text参数即可自动实现文本颜色与对应折线颜色一致:

import plotly.express as px
import pandas as pd

# 示例宽表数据
df = pd.DataFrame({
    'x': [1,2,3,4,5],
    'y1': [10,15,13,17,21],
    'y2': [8,12,9,15,18]
})

# 把多y列的宽表转为长表结构
df_long = df.melt(id_vars='x', value_vars=['y1','y2'], var_name='数据系列', value_name='数值')

# 绘图时直接指定text参数即可自动匹配颜色
fig = px.line(df_long, x='x', y='数值', color='数据系列', text='数值')
# 调整文本位置避免和折线重叠
fig.update_traces(textposition='top center')
fig.show()

方案2:保持宽表多y参数写法,遍历轨迹手动赋值

如果不想修改原有数据结构,可在生成图表后遍历每一条折线轨迹,直接复用折线本身的颜色作为文本颜色:

import plotly.express as px
import pandas as pd

df = pd.DataFrame({
    'x': [1,2,3,4,5],
    'y1': [10,15,13,17,21],
    'y2': [8,12,9,15,18]
})

# 沿用你原来的多y参数写法绘图
fig = px.line(df, x='x', y=['y1','y2'])

# 遍历每条折线轨迹,添加同色标注
for trace in fig.data:
    trace.text = trace.y
    trace.textposition = 'top center'
    # 直接复用对应折线的颜色作为文本颜色,无需自定义色板
    trace.textfont.color = trace.line.color

fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:27:03