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
相关产品推荐
相关产品推荐

