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

在R中如何按Name列分组为每个姓名绘制对应Score的直方图

R按姓名分组绘制分数直方图实现方案

前置准备:构造测试数据集

先基于你提供的示例数据构造R可识别的数据框:

df <- data.frame(
  Name = c("Anna", "David", "Juli", "Anna", "David", "Juli", "Anna", "David", "Juli"),
  Score = c(40, 30, 20, 20, 50, 40, 20, 20, 20)
)

实现方法1:基础R原生实现(无需额外安装包)

思路是遍历所有唯一姓名,筛选对应分数后逐个绘制直方图:

# 获取所有唯一姓名
unique_names <- unique(df$Name)

# (可选)调整画布布局,把3张图放在同一行展示
par(mfrow = c(1, 3))

# 循环绘制直方图
for (name in unique_names) {
  # 筛选当前姓名的分数
  sub_score <- df$Score[df$Name == name]
  # 绘制直方图
  hist(sub_score,
       main = paste0(name, "分数分布"),
       xlab = "分数",
       ylab = "频次",
       col = "lightblue",
       breaks = seq(0, 60, 10) # 固定分数区间,方便跨组对比
  )
}

绘制完成后可执行par(mfrow = c(1,1))恢复默认画布布局

实现方法2:ggplot2分面实现(更推荐,可视化效果更好)

用分面功能无需写循环,可一键生成分组直方图,代码更简洁规范:

# 未安装ggplot2先执行 install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = Score)) +
  geom_histogram(binwidth = 10, fill = "lightblue", color = "black") +
  # 按姓名分面,每行最多放3张图
  facet_wrap(~Name, nrow = 1) +
  labs(x = "分数", y = "频次") +
  theme_bw()

可根据需求调整binwidth参数修改直方图的区间宽度,调整nrow/ncol修改分面的排列方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:54:00