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

如何在时间序列折线图中标注Isolation Forest检测的异常点?

实现时间序列折线图叠加异常红点标注的方法

当然可以实现这个需求!这在异常检测的结果可视化中非常实用,能直观地看到异常点在时间序列中的位置。下面我结合你用到的lineplot DataFrame和Isolation Forest的结果,给出具体的实现步骤和代码示例:

核心思路

先绘制正常的时间序列折线图,再在同一画布上叠加异常点的红色散点——只需要筛选出iso_forest == -1的行数据,用散点图绘制即可。

具体实现(以Matplotlib为例)

假设你已经导入了pandas和matplotlib.pyplot,直接用以下代码就能完成:

import pandas as pd
import matplotlib.pyplot as plt

# 1. 绘制基础时间序列折线图
plt.figure(figsize=(12, 6))
plt.plot(lineplot['Time_ms'], lineplot['BacksGas_Flow_sccm'], label='正常时序数据', color='blue')

# 2. 筛选异常数据
anomalies = lineplot[lineplot['iso_forest'] == -1]

# 3. 在折线图上叠加红色异常点散图
plt.scatter(anomalies['Time_ms'], anomalies['BacksGas_Flow_sccm'], 
            color='red', marker='o', s=50, label='异常点')

# 4. 添加图表美化元素
plt.xlabel('Time (ms)')
plt.ylabel('BacksGas Flow (sccm)')
plt.title('BacksGas Flow 时间序列及异常点标注')
plt.legend()
plt.grid(True, alpha=0.3)

# 展示图表
plt.show()

用Seaborn实现的简化版本

如果你习惯用Seaborn,代码会更简洁:

import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 6))
# 绘制折线图
sns.lineplot(data=lineplot, x='Time_ms', y='BacksGas_Flow_sccm', color='blue', label='正常时序数据')
# 叠加异常点散点
sns.scatterplot(data=anomalies, x='Time_ms', y='BacksGas_Flow_sccm', 
                color='red', marker='o', s=50, label='异常点')

# 同样添加美化元素
plt.xlabel('Time (ms)')
plt.ylabel('BacksGas Flow (sccm)')
plt.title('BacksGas Flow 时间序列及异常点标注')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

小提示

  • 可以调整marker参数更换异常点的样式(比如用'^'三角形、'x'叉号),s参数调整点的大小,让异常点更醒目;
  • 如果你的时间序列数据量很大,建议先对数据做适当采样,避免图表过于拥挤;
  • 要是需要保存图表,直接在plt.show()之前加上plt.savefig('时序异常图.png', dpi=300)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:25:50