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

如何重塑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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:55:33