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

如何基于时间戳区分昼夜温度 使用ggplot绘制对应平均温度折线图

R语言ggplot绘制昼夜平均温度折线图操作步骤

1. 加载所需工具包

首先加载数据处理和绘图所需的包:

library(tidyverse)
library(lubridate) # 用于处理时间格式数据

2. 确定昼夜划分规则

有两种常用划分逻辑,可根据你的需求选择:

  • 固定时间划分:默认按6:00-18:00为日间,其余时间为夜间,适合无光照观测数据的场景
  • 光照阈值划分:根据数据中的PPFD(光合有效辐射)值判断,通常PPFD>10μmol·m⁻²·s⁻¹判定为日间,更贴合实际昼夜光照情况,适合有PPFD观测的场景

3. 数据预处理

假设你的原始数据集命名为df,先完成昼夜标记和日度均值统计:

# 提取日期和小时字段
df <- df %>%
  mutate(
    date = as.Date(Time), # 提取日期
    hour = hour(Time) # 提取小时
  )

# 标记昼夜分组(二选一即可)
# 方式1:固定时间划分
df <- df %>%
  mutate(period = case_when(
    hour >= 6 & hour < 18 ~ "日间平均温度",
    TRUE ~ "夜间平均温度"
  ))

# 方式2:光照阈值划分(以PPFD1列为例)
# df <- df %>%
#   mutate(period = case_when(
#     PPFD1 > 10 ~ "日间平均温度",
#     TRUE ~ "夜间平均温度"
#   ))

# 按日期+昼夜分组,计算平均温度(这里以Temp1为例,可替换为你需要的温度列)
daily_avg_temp <- df %>%
  group_by(date, period) %>%
  summarise(
    avg_temp = mean(Temp1, na.rm = TRUE),
    .groups = "drop"
  )

4. 绘制折线图

使用ggplot完成目标图表绘制:

ggplot(daily_avg_temp, aes(x = date, y = avg_temp, color = period)) +
  geom_line(linewidth = 1) + # 绘制折线
  labs(
    x = "日期",
    y = "平均温度(℃)",
    color = "温度类型"
  ) +
  theme_bw() # 采用简洁的白色主题

调整说明

  • 若需要使用其他温度列,替换summarise步骤中的Temp1为对应列名即可
  • 若昼夜划分的时间/光照阈值不符合你的研究场景,直接修改case_when中的判断条件即可
  • 代码中na.rm = TRUE会自动忽略温度的缺失值,无需额外预处理缺失数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:54:04