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

如何在Plotly中绘制按分类变量分色的无断点连续单折线?

在Plotly中实现按分类变量分色的连续折线(无断点)

你当前用px.line按color字段绘制时,Plotly会把不同颜色的分组拆成独立的折线轨迹(trace),不同轨迹之间不会自动衔接,所以出现了断点。要实现单条连续折线、按分类变量分色,可以通过分段绘制折线并共享衔接点的方式解决,具体实现如下:

解决方案代码

import numpy as np
import random
import pandas as pd
import plotly.graph_objects as go

# 生成原始数据
white_noise = np.array([random.gauss(mu=0.0, sigma=1.0) for x in range(100)])
rw = white_noise.cumsum()
rw_df = pd.DataFrame({
    'random_walk': rw, 
    'color': 10*['black'] + 50 * ['blue'] + 40*['black'], 
    'x': range(100)
})

# 拆分连续同色的区间(保留衔接点)
color_changes = rw_df['color'].ne(rw_df['color'].shift()).cumsum()
segments = rw_df.groupby(color_changes)

# 创建空图
fig = go.Figure()

# 逐个添加分段折线
for _, seg in segments:
    fig.add_trace(go.Scatter(
        x=seg['x'],
        y=seg['random_walk'],
        mode='lines',
        line=dict(color=seg['color'].iloc[0]),
        showlegend=False  # 避免重复显示图例
    ))

# 可选:设置布局样式
fig.update_layout(
    xaxis_title='x',
    yaxis_title='random_walk',
    title='连续分色随机游走折线'
)

fig.show()

关键说明

  • 拆分区间:通过color_changes标记颜色变化的位置,将连续同色的点划分为单独片段,相邻片段会共享衔接点(比如第10个点同时属于第一段末尾和第二段开头)
  • 分段绘制:用go.Scatter逐个添加每个颜色段的折线,确保每段折线的起点是上一段的终点,整体呈现为连续的单条折线
  • 隐藏重复图例:因为不需要重复展示相同颜色的图例,所以设置showlegend=False

这样绘制出的折线既按分类变量完成分色,又不会出现断点,完全是连续的单条折线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:20:04