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

Matplotlib中实现Picker事件点击散点显示图例标签

实现Matplotlib散点图点击显示数据点ID

要实现点击散点时显示对应ID,核心是通过点击事件的索引匹配原始数据,以下是具体修改方案:

关键思路

  1. 确保每个数据点的x、y坐标和ID数组索引一一对应
  2. 利用Matplotlib的pick_event事件返回的event.ind获取点击点在原始数据中的位置
  3. 通过索引从ID数组中提取对应标签,和坐标一起输出

修改后的完整代码示例

import matplotlib.pyplot as plt

# 示例数据:x、y坐标与对应ID一一对应
x = [1.2, 2.5, 3.1, 4.7]
y = [5.3, 6.8, 7.2, 8.5]
point_ids = ['ID_001', 'ID_002', 'ID_003', 'ID_004']

fig, ax = plt.subplots()
# 开启拾取功能,picker=5表示点击范围为5像素(避免点太小难点击)
scatter = ax.scatter(x, y, picker=5)

def on_pick(event):
    # 获取被点击点的索引(可能多个点被选中,所以用循环)
    for idx in event.ind:
        target_id = point_ids[idx]
        target_x = round(x[idx], 2)
        target_y = round(y[idx], 2)
        # 按需求格式输出
        print(f"ID: {target_id}, x值: {target_x}, y值: {target_y}")

# 绑定拾取事件
fig.canvas.mpl_connect('pick_event', on_pick)
plt.show()

代码说明

  • picker=5:扩大点击检测范围,解决散点过小难以精准点击的问题
  • event.ind:返回被点击点在原始数据数组中的索引位置,支持同时选中多个点的情况
  • 输出时用round()对坐标值做小数位数处理,让结果更整洁

运行效果

点击任意散点后,控制台会输出类似内容:

ID: ID_002, x值: 2.5, y值: 6.8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:15:41