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

如何在R中提取ggplot时间序列高亮区域的起止时间与时长

在R中识别时间序列高亮区域的起止时间与时长并存储为DataFrame

核心思路

要提取连续的高亮区间,关键是先标记每个时间点是否满足条件,再识别连续的符合条件的时间段,最后计算每个区间的起止时间和时长。以下是具体实现步骤:

步骤1:加载所需工具包

除你已加载的包外,还需要dplyr用于数据分组计算:

library(dplyr)

步骤2:处理Variable1的高亮区间

# 标记时间点是否满足条件,生成连续分组ID
var1_intervals <- df %>%
  mutate(
    meets_condition = Variable1 > 28.3,
    # 状态变化时生成新分组ID,聚合连续满足条件的时间点
    group_id = cumsum(c(TRUE, diff(meets_condition) != 0))
  ) %>%
  filter(meets_condition) %>%
  group_by(group_id) %>%
  summarise(
    Variable = "Variable1",
    Start_Time = min(DateTime),
    End_Time = max(DateTime),
    # 加15分钟匹配15分钟间隔的完整区间
    Duration_Minutes = as.numeric(difftime(End_Time, Start_Time, units = "mins")) + 15
  ) %>%
  ungroup() %>%
  select(-group_id) # 移除临时分组ID

步骤3:处理Variable2的高亮区间

var2_intervals <- df %>%
  mutate(
    meets_condition = Variable2 > 335 & Variable2 < 390,
    group_id = cumsum(c(TRUE, diff(meets_condition) != 0))
  ) %>%
  filter(meets_condition) %>%
  group_by(group_id) %>%
  summarise(
    Variable = "Variable2",
    Start_Time = min(DateTime),
    End_Time = max(DateTime),
    Duration_Minutes = as.numeric(difftime(End_Time, Start_Time, units = "mins")) + 15
  ) %>%
  ungroup() %>%
  select(-group_id)

步骤4:合并结果到同一DataFrame

# 合并两个变量的区间数据
highlight_intervals <- bind_rows(var1_intervals, var2_intervals)

# 查看最终结果
print(highlight_intervals)

关键说明

  • 连续组识别:cumsum(c(TRUE, diff(meets_condition) != 0))会在meets_condition状态变化时生成新分组ID,自动把连续满足条件的时间点归为同一组。
  • 时长适配:因你的时间序列间隔为15分钟,所以在计算时长时加15分钟,确保覆盖每个时间点对应的完整高亮区间(和绘图时xmin=DateTime-450、xmax=DateTime+450的逻辑匹配)。
  • 若需保留单个满足条件的时间点(不合并连续区间),可直接筛选后固定时长为15分钟:
var1_single_points <- df %>%
  filter(Variable1 > 28.3) %>%
  mutate(
    Variable = "Variable1",
    End_Time = DateTime + 900, # 对应15分钟时长
    Duration_Minutes = 15
  ) %>%
  select(Variable, Start_Time=DateTime, End_Time, Duration_Minutes)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 18:53:09