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

如何在Jupyter Notebook中交互式移除折线图的异常样本数据?

实现Jupyter Notebook中可点击交互的折线图(用于移除异常样本)

你可以通过Plotly的FigureWidget结合点击事件回调,实现直接点击折线切换隐藏/高亮状态,无需依赖图例。以下是完整实现代码:

import numpy as np
import plotly.graph_objects as go

# 生成示例数据(替换为你的实际数据)
x = np.linspace(0, 100)
y = np.random.randint(5, size=(5, 100))

# 创建FigureWidget
fig = go.FigureWidget()
for line_idx in range(y.shape[0]):
    fig.add_trace(go.Scatter(
        x=x, 
        y=y[:, line_idx], 
        mode='lines',
        name=f"样本 {line_idx}"
    ))

# 定义点击回调函数:点击折线切换显示/隐藏,同时高亮(变粗)
def toggle_line(trace, points, state):
    # 获取被点击的trace索引
    trace_idx = points.trace_index
    with fig.batch_update():
        # 切换可见性
        fig.data[trace_idx].visible = not fig.data[trace_idx].visible
        # 切换线条粗细实现高亮效果
        if fig.data[trace_idx].line.width == 2:
            fig.data[trace_idx].line.width = 4
        else:
            fig.data[trace_idx].line.width = 2

# 给每个trace绑定点击事件
for trace in fig.data:
    trace.on_click(toggle_line)

# 显示交互式图表
fig

使用说明

  1. 运行代码后,在Jupyter Notebook中会显示交互式折线图
  2. 直接点击任意折线,即可切换该折线的显示/隐藏状态,同时通过线条粗细变化实现高亮提示
  3. 完成标记后,可通过以下代码获取被隐藏(标记为异常)的样本索引,进而从原数组中移除:
# 获取所有被隐藏的样本索引
outlier_indices = [i for i, trace in enumerate(fig.data) if not trace.visible]
# 移除异常样本
cleaned_y = np.delete(y, outlier_indices, axis=0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:12:46