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

使用ggplot2绘制直方图添加分组计数与列总数值的报错处理问询

错误原因
  • 变量名不一致:计算分箱宽度bw时误用了不存在的数据集mydata,实际你的数据集命名为df,找不到对象会导致后续运算报错。
  • geom_text参数拼写错误:传入数据集的参数是data,不是mydata,参数不匹配会触发运算错误。
  • 分箱总计数的统计逻辑错误:原有代码中group_by(gender) %>% mutate(n=sum(age))计算的是不同性别所有样本的年龄总和,和你需要的「每个年龄分箱的总样本数」完全不符,应该用stat_bin统计分箱总数后再添加顶部文本。
修正后可运行代码

首先加载依赖包:

library(ggplot2)
library(dplyr)

数据集与参数计算部分:

df <- data.frame(
  age = c(58, 50, 71, 39, 70, 65, 43, 62, 79, 68, 67, 61, 44, 67), 
  gender = c("Male", "Male", "Female", "Female", "Male", "Male", "Female", "Female", "Male", "Female", "Male", "Female", "Female", "Male")
)
# 修正mydata为df
bw <- round(2*IQR(df$age, na.rm = T)/length(df$age)^(1/3), 0)
mybreaks <- seq(min(df$age) - bw, max(df$age) + bw, bw)

绘图代码:

ggplot(df, aes(age, fill = gender)) +
  geom_histogram(binwidth = bw, color = "black") +
  scale_x_continuous(breaks = mybreaks) +
  # 分箱内分组计数文本,兼容新版ggplot2语法
  stat_bin(
    binwidth = bw, 
    geom = "text", 
    color = "white", 
    aes(label = after_stat(count)), 
    position = position_stack(vjust = 0.5)
  ) +
  # 分箱顶部总计数文本
  stat_bin(
    binwidth = bw,
    geom = "text",
    aes(label = after_stat(count)),
    vjust = -0.5
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:48:04