如何重塑DataFrame适配条形图?保留year并拆分分类维度
数据重塑与绘图解决方案
1. 正确重塑数据格式
你之前的代码错误地把year列也纳入了pivot_longer的处理范围,导致无法保留年份信息。只需调整参数,排除year列,同时明确拆分规则即可得到目标格式:
library(tidyverse) # 重塑数据 barplot_df3_long <- barplot_df3 %>% pivot_longer( cols = -year, # 仅处理除year外的列 names_sep = "_", # 按下划线拆分列名 names_to = c("location", "type"), # 拆分后的两部分分别对应location和type values_to = "number" # 数值列命名为number )
执行后得到的数据结构完全符合你的需求:
# A tibble: 20 × 4 year location type number <dbl> <chr> <chr> <dbl> 1 1990 lwg pred 10 2 1990 bon pred 5 3 1990 lwg prey 20 4 1990 bon prey 30 5 1991 lwg pred 1 ...
2. 绘制目标条形图
基于重塑后的长格式数据,直接用ggplot2就能实现你要的可视化效果:
ggplot(barplot_df3_long, aes(x = location, y = number, fill = type)) + geom_col(position = "dodge") + # 生成并排分组条形图 facet_wrap(~year) + # 按年份分面展示 labs( x = "Location", y = "Number", fill = "Type" ) + theme_minimal()
这段代码会生成:X轴为location、Y轴为number、按type填充不同颜色、每个年份单独分面的分组条形图。
内容的提问来源于stack exchange,提问作者Dianna Li
相关产品推荐
相关产品推荐

