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

Plotly Express折线图如何修改图例与悬浮提示的默认variable文本

Plotly Express多折线图默认variable文本替换方法

问题背景

使用Plotly Express绘制多折线图时,如果直接传入宽表数据、给y参数传入多个列名,Plotly会在内部自动完成数据长宽转换,将分类维度默认命名为variable,该名称会同时显示在两个位置:

  • 图例的标题
  • 数据点的悬浮提示文本
    需要将该通用名称替换为具备实际语义的名称,示例场景要求替换为class。

最优实现方案

在调用px.line()时传入labels参数做字段名映射,一次配置即可同时覆盖上述两个位置,无需单独调整图例或悬浮提示模板。

代码示例

存在默认variable问题的原始写法:

import plotly.express as px
import pandas as pd

# 示例宽表数据:x_axis为x轴维度,两列分别对应不同类别的统计值
df = pd.DataFrame({
    "x_axis": [1, 2, 3, 4],
    "category_1": [2, 4, 1, 5],
    "category_2": [3, 1, 4, 2]
})

# 原始写法:会生成默认的variable图例和提示文本
fig = px.line(df, x="x_axis", y=["category_1", "category_2"])
fig.show()

添加labels参数完成替换的修改后写法:

fig = px.line(
    df,
    x="x_axis",
    y=["category_1", "category_2"],
    # key为默认字段名,value为替换后的实际语义名称
    labels={
        "variable": "class",
        "value": "统计值" # 对应y轴数值的显示名称,可按需修改
    }
)
fig.show()

修改效果

  • 图例标题从默认的variable替换为class
  • 悬浮提示中原variable: category_1格式的文本同步替换为class: category_1

备选方案:提前转换长表

如果习惯提前将宽表处理为长表格式再绘图,可在调用pandas.melt()转换时直接指定分类列名为目标名称,Plotly会自动读取列名生成图例和提示,不会出现默认variable文本:

# 宽表转长表时直接指定分类列名
df_long = df.melt(
    id_vars="x_axis",
    var_name="class", # 分类列直接命名为目标名称class
    value_name="统计值"
)
# 传入长表绘图,通过color参数指定分类列
fig = px.line(df_long, x="x_axis", y="统计值", color="class")
fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:24:22