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

在R中绘制均值分组条形图:按年级与性别展示平均成绩

按性别分组绘制各年级平均成绩的分组条形图

嘿,这个需求其实很好实现!我给你两种常用的方案,分别用ggplot2(更推荐,语法直观易扩展)和基础R绘图来完成:

方法一:使用ggplot2包(推荐)

ggplot2处理分组条形图非常省心,不需要提前手动计算均值,直接用内置的统计函数就能搞定:

# 先加载ggplot2包(如果没安装的话先运行install.packages("ggplot2"))
library(ggplot2)

# 绘制分组条形图
ggplot(learner, aes(x = factor(grade), y = literacy_total, fill = gender)) +
  # 用stat_summary计算均值并绘制条形,position="dodge"让同年级的两个条形并排
  geom_bar(stat = "summary", fun = "mean", position = position_dodge(width = 0.9)) +
  # 添加均值标签(可选,让图表更直观)
  stat_summary(fun = "mean", geom = "text", position = position_dodge(width = 0.9), 
               vjust = -0.5, size = 3.5) +
  # 设置坐标轴和标题
  labs(
    x = "年级",
    y = "平均读写测试成绩",
    fill = "性别",
    title = "各年级男女生平均读写成绩对比"
  ) +
  # 调整主题(可选,让图表更好看)
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

关键参数解释:

  • fill = gender:指定按性别分组填充颜色,这是实现分组的核心
  • position = position_dodge(width = 0.9):让同x轴类别(年级)的两个条形并排显示,width参数控制条形间的间距
  • factor(grade):把年级转成因子类型,避免x轴按连续数值显示(如果你的grade已经是因子可以去掉)

方法二:使用基础R绘图

如果不想用ggplot2,也可以用基础R的barplot实现,不过需要先手动计算各年级-性别组合的均值:

# 1. 计算每个年级、性别对应的平均成绩
mean_scores <- aggregate(literacy_total ~ grade + gender, data = learner, FUN = mean)

# 2. 把数据整理成矩阵格式(barplot需要这种结构)
score_matrix <- reshape2::dcast(mean_scores, grade ~ gender, value.var = "literacy_total")
# 如果没安装reshape2,先运行install.packages("reshape2")

# 3. 绘制分组条形图
barplot(
  t(score_matrix[, -1]),  # 转置矩阵,让性别作为分组维度
  beside = TRUE,  # 设置为分组条形图(而非堆叠)
  names.arg = score_matrix$grade,  # x轴标签为年级
  col = c("#1f77b4", "#ff7f0e"),  # 自定义男女的颜色
  xlab = "年级",
  ylab = "平均读写测试成绩",
  main = "各年级男女生平均读写成绩对比"
)

# 添加图例
legend("topright", legend = colnames(score_matrix[, -1]), fill = c("#1f77b4", "#ff7f0e"))

关键步骤解释:

  • aggregate函数用来按年级和性别分组计算均值
  • dcast把长格式数据转成宽格式,方便barplot处理
  • beside = TRUE是实现分组条形的核心参数,默认是堆叠条形图

两种方法都能实现你想要的效果,推荐用ggplot2,后续调整样式、添加注释会更灵活~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:26:47