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

如何用pivot_longer和facet_wrap实现指定多面板鸟类计数可视化?

解决步骤

1. 修正长格式数据转换

你原来的pivot_longer代码存在语法错误,!data不是正确的列选择方式。需要明确指定保留ID和Month列,将鸟类相关列(Geese、Ducks、Crows)转换为长格式,同时从ID中拆分出观测者姓名(Name)和年份(Year)——这是实现6个面板的关键:

library(tidyverse)

# 宽转长+拆分ID信息
data_long <- data %>%
  # 将鸟类列转为长格式,保留ID和Month
  pivot_longer(cols = !c(ID, Month), 
               names_to = "Bird", 
               values_to = "count") %>%
  # 从ID拆分出Name和Year(ID格式为Name_Month_Year)
  separate(ID, into = c("Name", "tmp_month", "Year"), sep = "_") %>%
  # 删除重复的月份列
  select(-tmp_month)

2. 绘制6个面板的分面图

要得到6个面板(3种鸟类 × 2个年份),只需用facet_wrap同时按Bird和Year分面,还可以给不同观测者的点上色区分:

ggplot(data_long, aes(x = Month, y = count, color = Name)) +
  geom_point(size = 2) +
  # 按鸟类和年份分面,生成6个面板
  facet_wrap(vars(Bird, Year)) +
  # 可选:优化主题样式
  theme_bw()

效果说明

  • 每个面板对应一种鸟类+一个年份,共6个面板
  • 每个面板内包含Bob、Ken、Rick各2个数据点(对应Jan和Feb)
  • 不同颜色的点区分不同观测者,X轴为离散的Jan/Feb,Y轴为鸟类数量

内容的提问来源于stack exchange,提问作者B.Nin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:42:03