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

Plotly折线图分组长文本标签优化方案咨询

解决Plotly折线图长分组标签显示异常的方案

针对长分组标签导致图例显示异常的问题,可以通过以下两种方式实现仅保留折线颜色区分,长文本标签仅在鼠标悬停时显示:

方法一:替换图例短标识,悬停保留完整标签

这种方法在图例中显示简短标识,鼠标悬停折线上时仍能查看完整长标签内容,既保证图例整洁,又不丢失信息。

修改后的代码:

import pandas as pd
import plotly.express as px

df = pd.DataFrame(dict(
    x =     [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4],
    group = ["a", "Very longgggggggggggggggggggggggggggggggggggggggggggggg labelllllllllllllllllllllllllllllllllllllllllll", "c", "a", "Very longgggggggggggggggggggggggggggggggggggggggggggggg labelllllllllllllllllllllllllllllllllllllllllll", "c", "a", "b", "c", "a", "Very longgggggggggggggggggggggggggggggggggggggggggggggg labelllllllllllllllllllllllllllllllllllllllllll", "c"],
    y =     [1, 2, 5, 3, 4, 5, 5, 6, 5, 7, 8, 5]
))

# 为长标签创建短映射
label_map = {
    "Very longgggggggggggggggggggggggggggggggggggggggggggggg labelllllllllllllllllllllllllllllllllllllllllll": "b"
}
# 新增列用于图例显示,保留原group列确保悬停显示完整文本
df["legend_group"] = df["group"].replace(label_map)

fig_sample = px.line(df, x="x", y="y", color='legend_group', title='sample',
                     hover_data={"legend_group": False, "group": True})  # 悬停时隐藏短标识,显示完整标签

# 同步更新图例名称为简洁标识
fig_sample.for_each_trace(lambda t: t.update(name=label_map.get(t.name, t.name)))

fig_sample.show()

方法二:隐藏图例,仅通过颜色和悬停提示区分

如果不需要显示图例,仅依赖折线颜色和悬停提示识别分组,可以直接隐藏图例,同时确保悬停时显示完整标签:

修改后的代码:

import pandas as pd
import plotly.express as px

df = pd.DataFrame(dict(
    x =     [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4],
    group = ["a", "Very longgggggggggggggggggggggggggggggggggggggggggggggg labelllllllllllllllllllllllllllllllllllllllllll", "c", "a", "Very longgggggggggggggggggggggggggggggggggggggggggggggg labelllllllllllllllllllllllllllllllllllllllllll", "c", "a", "b", "c", "a", "Very longgggggggggggggggggggggggggggggggggggggggggggggg labelllllllllllllllllllllllllllllllllllllllllll", "c"],
    y =     [1, 2, 5, 3, 4, 5, 5, 6, 5, 7, 8, 5]
))

fig_sample = px.line(df, x="x", y="y", color='group', title='sample')
# 隐藏图例
fig_sample.update_layout(showlegend=False)
# 自定义悬停模板,确保显示完整group标签
fig_sample.update_traces(hovertemplate='x: %{x}<br>y: %{y}<br>group: %{customdata[0]}',
                         customdata=df[['group']].values)

fig_sample.show()

场景说明

  • 方法一适合需要保留图例的场景:用户可通过图例快速对应颜色与分组,悬停查看完整信息。
  • 方法二适合无需图例的场景:彻底规避长标签对布局的影响,仅通过颜色和悬停提示识别分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:20:42