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

Plotly express strip plot指定ID点设置红色未生效问题排查

问题原因

  1. px.strip()的color_discrete_sequence参数是为不同的分类组别分配颜色,不是为每行数据单独指定颜色。即便你传入长度和行数相等的颜色列表,plotly也只会按照实际的分类数量取列表前几个值使用,剩余值会被直接忽略。
  2. 你没有给px.strip()传入color参数,plotly默认所有点属于同一类别,只会取color_discrete_sequence的第一个颜色值(你的生成列表第一个值是蓝色,因为首行ID为1不在待标红列表中),因此所有点都显示为蓝色。

修复方案

新增一列标识是否为需要标红的ID,将该列作为color参数传入,再用color_discrete_map指定两类对应的颜色即可,修改后的代码如下:

import plotly.express as px
import pandas as pd
import random

# 示例DataFrame
df=pd.DataFrame({'Id':list(range(1,101)), 'Value':[random.randint(0,50) for i in range(100)]})

def strip_plotly(df,col_value,col_hover=[],col_color=None,highlight_ids=[]):
    # 新增高亮标记列
    df['is_highlight'] = df[col_color].isin(highlight_ids) if col_color is not None else False
        
    fig = px.strip(df, 
                   y=col_value,
                   hover_data = col_hover,
                   color='is_highlight',
                   color_discrete_map={True:"red", False:"blue"})

    fig.update_layout({
            'plot_bgcolor': 'rgba(0,0,0,0)',
            'paper_bgcolor': 'rgba(0,0,0,0)',
        },
        hoverlabel=dict(
            font_size=12, 
        ),
        xaxis={
            'title':"x",
        },
        yaxis={'title':"y"},
        title={
            'text': "strip plot for stackoverflow",
            'x':0.5,
            'xanchor': 'center',
            'yanchor': 'top'}
    )

    fig.update_xaxes(showspikes=True, spikecolor = 'black', showline=True, linewidth=1,linecolor='black',
                     ticks = "outside", tickwidth = 1, tickcolor = 'black',ticklen = 5)
    fig.update_yaxes(showspikes=True, spikecolor = 'black', showline=True, linewidth=1,linecolor='black',
                     ticks = "outside", tickwidth = 1, tickcolor = 'black',ticklen = 5)
    
    fig.show()

# 调用函数
strip_plotly(df,"Value",col_hover=["Id"],col_color="Id",highlight_ids=[5,10])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:36:01