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

如何使用ggplot2绘制不同数据集同一变量的分性别计数折线图

实现方案

不需要手动整合计数,用R的批量列表处理逻辑可以一步完成数据汇总+绘图,后续新增波次数据也可以直接复用代码,扩展性和准确率都更高。

依赖包

需要提前安装加载tidyverse套件,包含数据处理用的dplyr、purrr和绘图用的ggplot2:

library(tidyverse)

步骤1:批量汇总计数

把3个数据集打包成命名列表,自动批量统计每个数据集的分性别计数,直接生成绘图用的长表:

# 打包成命名列表,列表名自动对应x轴的v1/v2/v3标识
dat_list <- lst(v1, v2, v3)

# 批量统计分性别计数,合并为绘图数据集
plot_dat <- dat_list %>%
  map_df(~ count(.x, gender), .id = "wave")

运行后生成的plot_dat已经包含所有绘图需要的字段:wave列对应波次(v1/v2/v3)、gender列对应性别、n列对应计数。

步骤2:绘图

直接用生成的数据集绘制要求的点线图:

ggplot(plot_dat, aes(x = wave, y = n, color = gender, group = gender)) +
  geom_line(linewidth = 1) + # 同性别连线
  geom_point(size = 3) + # 标记数值点
  labs(x = "数据集/波次", y = "分性别计数", color = "性别") +
  theme_bw()

如果需要在点上直接显示数值,可以在绘图代码中加一行geom_text(aes(label = n), vjust = -0.8)。

方案优势

  • 无任何手动统计、手动拼接步骤,避免人为计算错误
  • 扩展性强,后续新增v4、v5等波次数据时,只需要把新数据集加入lst(v1, v2, v3, v4, v5)即可,后续统计、绘图代码完全不需要修改
  • 自动保留波次的顺序为v1→v2→v3,不需要额外调整x轴因子水平

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:15:03