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

Bokeh中HoverTool提示框无法显示样本ID问题求助

解决Bokeh UMAP绘图HoverTool显示样本ID的问题

核心问题是你没把DataFrame的索引(样本ID)传入ColumnDataSource——默认情况下数据源不会自动包含索引列,所以HoverTool找不到对应字段才显示"???"。按下面步骤来:

1. 先把DataFrame索引转为普通列

把你的索引提取成单独的列,比如命名为sample_id:

# 假设你的DataFrame叫df,UMAP结果存在df['umap_x']和df['umap_y']里
df['sample_id'] = df.index

2. 正确构建ColumnDataSource

确保数据源包含UMAP坐标和样本ID列:

from bokeh.models import ColumnDataSource

source = ColumnDataSource(data={
    'x': df['umap_x'],
    'y': df['umap_y'],
    'sample_id': df['sample_id']
})

3. 配置HoverTool并关联字段

指定HoverTool要显示的字段,注意字段名要和数据源里的完全一致:

from bokeh.models import HoverTool
from bokeh.plotting import figure, show

p = figure(title="UMAP 可视化", tools="pan,box_zoom,reset,hover")
p.circle(x='x', y='y', source=source, size=8)

# 配置HoverTool
hover = p.select_one(HoverTool)
hover.tooltips = [
    ("样本ID", "@sample_id"),
    ("UMAP坐标", "(@x, @y)")
]

show(p)

常见报错排查

  • 如果用ColumnDataSource时报错,大概率是数据源里的字段名和绘图时引用的不一致,检查拼写和大小写
  • 确保sample_id列的类型是字符串或可显示的数值类型,不要有缺失值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:17:04