如何基于时间戳区分昼夜温度 使用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
相关产品推荐
相关产品推荐

