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

如何在plotly按类别着色的散点图中高亮指定ID的单个数据点

Plotly散点图单数据点高亮实现方案

散点图示例

以下是两种可直接落地的实现方案:

方案1:叠加独立高亮轨迹(最推荐)

该方案不会修改原有散点的分类逻辑和颜色配置,单独新增一个轨迹渲染目标点,灵活度最高,适配所有Plotly散点图场景。
示例代码如下:

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

# 此处替换为你的实际数据集,需包含x、y、分类字段、唯一ID字段
df = pd.DataFrame({
    "x": [1,2,3,4,5,6],
    "y": [2,3,1,5,4,2],
    "category": ["A","A","B","A","B","B"],
    "id": ["p1","p2","p3","p4","target_id","p6"]
})

# 原有基础散点图,保留按category区分的蓝黄配色
fig = px.scatter(df, x="x", y="y", color="category", color_discrete_map={"A":"blue", "B":"yellow"})

# 筛选出需要高亮的特定ID对应数据点
target_point = df[df["id"] == "target_id"]

# 叠加高亮专属轨迹
fig.add_trace(go.Scatter(
    x = target_point["x"],
    y = target_point["y"],
    mode = "markers",
    marker = dict(
        color = "red", # 自定义高亮色
        size = 15, # 尺寸远大于普通点
        symbol = "star", # 特殊标记形状
        line = dict(width = 2, color = "black") # 加外边框进一步区分
    ),
    name = "目标点",
    hovertext = f"目标ID: {target_point['id'].values[0]}",
    showlegend = True
))

fig.show()
  • 优势:原有分类的颜色、图例完全不受影响,高亮点样式可任意自定义,代码逻辑简单不易出错。

方案2:原有轨迹配置条件样式

如果不想新增额外轨迹,可以直接给原有散点的marker属性传入条件值,对目标点单独设置样式:

import plotly.express as px
import pandas as pd

df = pd.DataFrame({
    "x": [1,2,3,4,5,6],
    "y": [2,3,1,5,4,2],
    "category": ["A","A","B","A","B","B"],
    "id": ["p1","p2","p3","p4","target_id","p6"]
})

# 提前配置条件样式字段
df["point_size"] = df["id"].apply(lambda x: 15 if x == "target_id" else 8)
df["border_width"] = df["id"].apply(lambda x: 2 if x == "target_id" else 0)
df["border_color"] = df["id"].apply(lambda x: "black" if x == "target_id" else "rgba(0,0,0,0)")

fig = px.scatter(
    df, 
    x="x", 
    y="y", 
    color="category", 
    color_discrete_map={"A":"blue", "B":"yellow"},
    size="point_size",
    size_max=15
)

# 批量更新点边框属性
fig.update_traces(marker=dict(
    line=dict(width=df["border_width"], color=df["border_color"])
))

fig.show()
  • 优势:全程只有一个散点轨迹,图例不会新增额外项。

可选优化

  • 给高亮点添加文字标注:调用fig.add_annotation()在目标点旁边显示ID或者说明文本
  • 自定义高亮点的hover提示信息,和普通点做区分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:45:04