如何在UMAP散点图中添加/替换为字符串类型的pid标签
给UMAP散点图添加
pid文本标签的解决方案 可以用Matplotlib手动绘制UMAP结果并添加文本标签,替换原有的umap.plot.points方法,就能明确显示每个点对应的pid字符串:
实现代码
import umap import matplotlib.pyplot as plt # 训练UMAP模型,注意保留原数据的pid列 mapper = umap.UMAP(n_neighbors=5, metric='hamming').fit(data.drop('pid', axis=1)) # 获取UMAP降维后的二维坐标 umap_coords = mapper.embedding_ # 创建绘图对象 fig, ax = plt.subplots(figsize=(10, 8)) # 可选:保留原有彩色聚类标记的话,先绘制彩色散点 ax.scatter(umap_coords[:, 0], umap_coords[:, 1], c=np.array(clusters['leaves_color_list']), s=50, alpha=0.6) # 遍历每个点,添加对应的pid文本标签 for idx, (x, y) in enumerate(umap_coords): pid_label = data['pid'].iloc[idx] ax.text(x, y, pid_label, fontsize=8, ha='center', va='center') # 设置图表标题与坐标轴标签 ax.set_title('UMAP散点图(带pid标签)') ax.set_xlabel('UMAP 第一维度') ax.set_ylabel('UMAP 第二维度') plt.show()
关键说明
- 通过
mapper.embedding_可获取UMAP降维后的坐标数据,这是模型训练完成后输出的核心结果 - 若不需要原有彩色散点,直接删除
ax.scatter代码行,仅保留文本标签即可 - 调整
fontsize(字体大小)、s(散点尺寸)、alpha(透明度)等参数,能优化标签可读性,减少重叠问题
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

