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

能否将Plotly中的多个trace合并为单个并实现统一图例控制?

如何将Plotly中两个Trace合并为同一图例项并统一切换可见性?

你提供的代码会生成两个独立的Scatter Trace,每个Trace都有自己的图例项,点击时只能单独控制可见性。要实现同一图例标题、共享视觉属性、统一切换可见性的需求,有两种实用方法:

方法1:合并数据为单个Trace

直接把两个分段的x、y数据合并成一个数组,用None作为分段分隔符(Plotly会自动在None处断开线条),这样整个内容属于同一个Trace,天然共享所有视觉属性,图例仅显示一个标题,点击即可统一切换可见性。

示例代码:

import plotly.graph_objs as go
fig = go.Figure()
# 合并两个分段的数据,用None分隔实现线条断开
fig.add_trace(go.Scatter(
    x = [0, 1, 2, 3, None, 5,6,7,8], 
    y = [1, 2, 3, 4, None, 1, 2, 3, 4],
    mode = 'lines+markers',
    name = "合并后的Trace",
))
fig.show()

方法2:分组多个Trace(保留独立数据但共享图例控制)

如果需要保留两个独立的Trace对象(比如后续要单独修改某一段的属性),可以通过legendgroup将它们归为同一组,同时仅让第一个Trace显示图例项,这样点击图例时两个Trace会同步切换可见性,且视觉属性自动保持一致。

示例代码:

import plotly.graph_objs as go
fig = go.Figure()
fig.add_trace(go.Scatter(
    x = [0, 1, 2, 3], y = [1, 2, 3, 4],
    mode = 'lines+markers',
    name = "分组Trace",
    legendgroup = "group1",  # 指定同一分组
    showlegend = True  # 仅第一个Trace显示图例项
))
fig.add_trace(go.Scatter(
    x = [5,6,7,8], y = [1, 2, 3, 4],
    mode = 'lines+markers',
    name = "分组Trace",  # 同名确保视觉属性一致
    legendgroup = "group1",  # 归属同一分组
    showlegend = False  # 不显示额外图例项
))
fig.show()

两种方法都能满足需求,可根据是否需要保留独立Trace的需求选择使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:10:33