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

使用Pivot_Longer合并3个数据集并绘制ggplot可视化图表

解决方案:合并数据集+转长格式+可视化

1. 加载必备工具包

先加载tidyverse,它包含了数据合并、格式转换和可视化所需的全部工具:

library(tidyverse)

2. 合并数据集并转换为长格式

先把三个年份的数据集合并,再用pivot_longer转成你需要的四列格式:

# 合并三个年份的数据集
combined_data <- bind_rows(A_1930, B_1990, C_2020)

# 转换为长格式,生成YEAR、GRADE、NAME、VALUE四列
long_data <- combined_data %>%
  pivot_longer(
    cols = c(total, white, black, imm),  # 指定要转成行的宽格式列
    names_to = "NAME",                   # 存储原列名的新列
    values_to = "VALUE"                  # 存储原列数值的新列
  ) %>%
  rename(YEAR = year, GRADE = grade)     # 把列名改成大写匹配需求

# 查看转换后的前几行数据
head(long_data)

3. 可视化实现

由于看不到示例图,这里提供两种实用的可视化方案,你可以按需选择:

方案1:分年级趋势折线图

适合展示不同群体数值随年份的变化趋势:

ggplot(long_data, aes(x = YEAR, y = VALUE, color = NAME, group = NAME)) +
  geom_line(linewidth = 1) +
  geom_point(size = 2) +
  facet_wrap(~GRADE) +  # 按年级分面板展示
  labs(
    title = "各年级不同群体数值随年份变化",
    x = "年份",
    y = "数值",
    color = "群体类别"
  ) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

方案2:分年份年级的柱状对比图

适合对比同一年份、年级下不同群体的数值差异:

ggplot(long_data, aes(x = NAME, y = VALUE, fill = NAME)) +
  geom_col(position = "dodge") +
  facet_grid(GRADE ~ YEAR) +  # 按年级和年份交叉分面
  labs(
    title = "各年份、年级下不同群体数值对比",
    x = "群体类别",
    y = "数值",
    fill = "群体类别"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5),
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

内容的提问来源于stack exchange,提问作者Kimberly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:05:09