如何提取行为频率并绘制鸟类行为随日龄变化的频率图?
解决方案
1. 提取目标行为的频率数据
你可以在现有数据处理流程后直接添加filter()函数筛选"Active"行为,也可以基于已有的汇总数据框做筛选:
# 方法1:在原有计算流程后直接筛选 active_freq <- df %>% group_by(agesincetaggingdays, behaviors) %>% summarise(n = n(), .groups = "drop") %>% # 加.groups参数消除分组警告 mutate(freq = n / sum(n)) %>% filter(behaviors == "Active") # 方法2:若已有全量汇总数据框(比如命名为summary_df),直接筛选 # active_freq <- summary_df %>% filter(behaviors == "Active")
2. 绘制日龄-频率图表
用ggplot2包绘图是R中最常用的方式,若未安装先运行install.packages("ggplot2"):
library(ggplot2) ggplot(active_freq, aes(x = agesincetaggingdays, y = freq)) + geom_point(size = 1.5, alpha = 0.6) + # 散点展示原始频率数据 geom_smooth(method = "loess", se = TRUE, color = "#2E86AB") + # 添加平滑曲线与置信区间 labs( x = "日龄(天)", y = "Active行为频率", title = "鸟类Active行为频率随日龄的变化" ) + theme_bw() # 简洁黑白主题
补充优化
- 若部分日龄无Active行为记录导致
freq缺失,可补全0-1500所有日龄并将缺失值设为0:
library(tidyr) active_freq_full <- active_freq %>% complete(agesincetaggingdays = 0:1500, fill = list(freq = 0))
- 若不需要平滑曲线,可替换
geom_smooth()为geom_line()来连接所有数据点,或仅保留geom_point()展示散点分布。
内容的提问来源于stack exchange,提问作者Skyk
相关产品推荐
相关产品推荐

