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

如何在离线Plotly Python Jupyter Notebook中获取选中点的数据?

获取Plotly离线散点图选中区域的点数据/索引

首先先看你提供的原始散点图代码:

from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import plotly.graph_objs as go
import numpy as np

N = 30
random_x = np.random.randn(N)
random_y = np.random.randn(N)

# Create a trace
trace = go.Scatter(
    x = random_x,
    y = random_y,
    mode = 'markers'
)

data = [trace]

# Plot and embed in ipython notebook!
iplot(data, filename='basic-scatter')

要实现选中区域后获取对应点的信息,咱们可以改用plotly.graph_objects.FigureWidget来创建交互式图表,它支持监听选择事件,具体实现如下:

实现步骤

  • 导入FigureWidget并初始化交互式图表
  • 添加散点图轨迹
  • 定义选择事件的回调函数,提取选中点的索引、x、y数据

完整示例代码

from plotly.graph_objects import FigureWidget
import plotly.graph_objs as go
import numpy as np

# 生成随机数据
N = 30
random_x = np.random.randn(N)
random_y = np.random.randn(N)

# 创建FigureWidget交互式图表
fig = FigureWidget()
# 添加散点轨迹
scatter = fig.add_scatter(x=random_x, y=random_y, mode='markers')

# 定义选择事件的回调函数
def on_selection_change(trace, points, selector):
    # 获取选中点的索引
    selected_indices = points.point_inds
    # 提取对应索引的x、y数据
    selected_x = [random_x[i] for i in selected_indices]
    selected_y = [random_y[i] for i in selected_indices]
    
    print("选中点的索引:", selected_indices)
    print("选中点的x数据:", selected_x)
    print("选中点的y数据:", selected_y)

# 把回调函数绑定到散点轨迹的选择事件上
scatter.on_selection(on_selection_change)

# 显示交互式图表
fig

使用说明

运行上述代码后,在Jupyter Notebook里会出现交互式散点图:

  • 按住鼠标左键拖动即可框选目标区域
  • 松开鼠标后,控制台会自动打印出选中点的索引、x值和y值
  • 点击图表空白区域即可取消当前选中状态

这种方式完全基于离线Plotly环境,不需要依赖外部服务,完美适配Jupyter Notebook的交互场景。

内容的提问来源于stack exchange,提问作者d-grossman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:30:42