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

Plotly Express如何生成带连续色阶且点间连线的图表

实现方案

你要的效果可以直接通过调整px.line的配置实现,不需要额外组合散点和折线图层,修改后的代码如下:

import plotly.express as px
import pandas as pd
import numpy as np

x = [1,2,3,4,5,6]

df = pd.DataFrame(
    {
        'x': x*3,
        'y': list(np.array(x)) + list(np.array(x)**2) + list(np.array(x)**.5),
        'color': list(np.array(x)*0) + list(np.array(x)*0+1) + list(np.array(x)*0+2),
    }
)

fig = px.line(
    df,
    x = 'x',
    y = 'y',
    color = 'color',
    markers = True, # 开启数据点标记,同时展示折线和散点效果
    color_continuous_scale = 'viridis', # 手动指定连续色阶,强制使用连续配色逻辑
    title = '连续色阶带标记折线图'
)
fig.show()

原问题原因说明

  • px.line默认未展示连续色阶:低版本Plotly的express折线图对数值型color字段的默认处理会优先使用分类色阶,手动传入color_continuous_scale参数即可触发连续色阶渲染,你可以替换为Plotly支持的任意连续配色方案,比如plasma、blues等。
  • px.scatter无法连接折线:plotly.express的散点图没有内置连线参数,不需要单独用散点图实现需求,折线图的markers参数已经可以同时满足「折线连接+散点标记」的展示要求。

如果需要更精细的自定义样式(比如单独调整折线粗细、散点大小、描边颜色等),可以用plotly.graph_objects分层绘制折线和散点实现,示例如下:

import plotly.graph_objects as go
import plotly.express as px

colors = px.colors.sample_colorscale('viridis', df['color'].unique())

fig = go.Figure()
for idx, (color_val, group_df) in enumerate(df.groupby('color')):
    # 同时添加折线和散点
    fig.add_trace(go.Scatter(
        x=group_df['x'], y=group_df['y'], mode='lines+markers',
        line=dict(color=colors[idx], width=2), 
        marker=dict(color=colors[idx], size=8),
        name=f'color={color_val}'
    ))
fig.update_layout(title='连续色阶带标记折线图')
fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:06:04