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

如何在Pandas时间序列图上叠加高亮可靠性低于95的区域

为Pandas时间序列添加低可信度时段高亮

你可以借助Matplotlib直接在图表上绘制半透明矩形,标记出reliability低于95的时段。以下是完整实现代码:

import pandas as pd
import datetime
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

# 构造数据
d = {
    'end_time': [datetime.datetime(2020, 3, 17, 0, i*5) for i in range(12)],
    'measurement': [2000, 1500, 800, 900, 400, 4000, 300, 900, 1000, 1250, 1100, 1300],
    'reliability': [99, 81, 84, 85, 99, 86, 96, 97, 98, 99, 98, 97]
}
subset_df = pd.DataFrame.from_dict(d)

# 创建绘图对象
fig, ax = plt.subplots(figsize=(10, 5))
subset_df.plot('end_time', 'measurement', ax=ax)

# 找出reliability < 95的连续区间
low_reliability = subset_df['reliability'] < 95
# 标记区间的起始和结束索引
start_indices = low_reliability[low_reliability & ~low_reliability.shift(1).fillna(False)].index
end_indices = low_reliability[low_reliability & ~low_reliability.shift(-1).fillna(False)].index

# 获取y轴范围,确定高亮矩形的高度
y_min, y_max = ax.get_ylim()
height = y_max - y_min

# 逐个添加高亮矩形
for start, end in zip(start_indices, end_indices):
    # 起始时间和结束时间(取下一个时间点作为区间结束)
    start_time = subset_df.loc[start, 'end_time']
    end_time = subset_df.loc[end + 1, 'end_time'] if end + 1 < len(subset_df) else subset_df.loc[end, 'end_time']
    # 计算时间差对应的x轴坐标
    x_start = ax.get_xlim()[0] + (start_time - subset_df['end_time'].min()) / (subset_df['end_time'].max() - subset_df['end_time'].min()) * (ax.get_xlim()[1] - ax.get_xlim()[0])
    x_end = ax.get_xlim()[0] + (end_time - subset_df['end_time'].min()) / (subset_df['end_time'].max() - subset_df['end_time'].min()) * (ax.get_xlim()[1] - ax.get_xlim()[0])
    # 添加半透明矩形
    rect = Rectangle((x_start, y_min), x_end - x_start, height, color='red', alpha=0.2)
    ax.add_patch(rect)

# 重置y轴范围(避免添加矩形后范围变化)
ax.set_ylim(y_min, y_max)
plt.xlabel('时间')
plt.ylabel('测量值')
plt.title('测量值随时间变化(红色高亮低可信度时段)')
plt.show()

关键说明

  • 先通过low_reliability = subset_df['reliability'] < 95筛选低可信度行,再用shift()识别连续区间的起止索引
  • 用Matplotlib的Rectangle绘制半透明红色矩形,alpha=0.2保证不遮挡主曲线
  • 矩形宽度匹配低可信度时段的时间范围,高度覆盖整个测量值区间,确保标识清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:45:50