在R中创建12种常见鸟类观测数按日历周分布的条形图
R实现鸟类每周观测数量的分面条形图
解决方案代码与说明
1. 加载依赖包
library(tidyverse) library(lubridate)
2. 数据预处理与统计
# 提取目标列、转换日期格式并计算ISO周数 processed_data <- data_artportal %>% select(artnamn, startdatum) %>% # 根据实际日期格式调整转换函数,比如dmy()/mdy() mutate(startdatum = ymd(startdatum), week = as.character(isoweek(startdatum))) # 筛选12种观测次数最多的鸟类 top_12_birds <- processed_data %>% count(artnamn, sort = TRUE) %>% slice_head(n = 12) %>% pull(artnamn) # 统计各物种每周观测数,调整周数因子顺序(将第53周移至前端) weekly_counts <- processed_data %>% filter(artnamn %in% top_12_birds) %>% count(artnamn, week) %>% mutate(week = fct_relevel(week, "53"))
3. 绘制分面条形图
ggplot(weekly_counts, aes(x = week, y = n)) + geom_bar(stat = "identity", fill = "#4682B4") + # 按物种分面,可调整ncol/nrow控制布局 facet_wrap(~artnamn, ncol = 3) + labs(x = "ISO周数", y = "观测数量", title = "12种常见鸟类每周观测数量") + theme_minimal() + # 旋转x轴标签避免重叠 theme(axis.text.x = element_text(angle = 45, hjust = 1))
关键细节说明
- 日期转换:如果
startdatum列不是YYYY-MM-DD格式,需将ymd()替换为对应格式的转换函数(如dmy())。 - 分面布局:可通过修改
facet_wrap的ncol参数调整每行显示的物种数量。 - 因子顺序:
fct_relevel确保第53周(跨年周)显示在x轴最左侧,适配跨年观测数据的展示逻辑。
内容的提问来源于stack exchange,提问作者Kei Len
相关产品推荐
相关产品推荐

