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

使用ggplot facet_wrap按性别绘制血糖水平直方图报错求助

问题解决与修正代码

你的代码存在三个核心问题,导致报错且无法生成目标图:

  1. 分面参数错误:facet_wrap(~Physiology)里的Physiology是数据框名称,不是用于分面的列名,需替换为分面依据的列sex。
  2. 直方图映射错误:直方图用于展示单个连续变量的分布,你错误地将x映射为分类变量sex,应改为映射连续变量bloodlevel;同时直方图默认无需手动指定y轴(y轴自动为计数),多余的y=bloodlevel会干扰绘图逻辑。
  3. binwidth设置不合理:当前bloodlevel取值范围在11-16之间,binwidth=5会把所有数据合并到一个区间,无法展示分布,建议调整为0.5或1。

修正后的完整代码:

# 构造数据框(若未加载数据可执行此段)
Physiology <- data.frame(
  bloodlevel = c(14.9,12.9,14.7,14.7,14.8,14.7,13.9,14.1,16.1,16.1,15.3,12.8,14.0,14.9,11.2,14.5,12.1,14.8,15.2,11.2,15.0,13.2,14.4,14.7,13.2),
  sex = c(rep("M",14), rep("F",11))
)

# 绘制分面直方图
ggplot(Physiology, aes(x = bloodlevel)) +
  geom_histogram(binwidth = 0.5, fill = "white", color = "black") +
  facet_wrap(~sex) +
  labs(x = "血糖水平", y = "计数") +
  theme_bw()

这段代码会生成两个分面直方图,分别展示男性和女性的血糖水平分布,与你期望的示例图结构一致。

内容的提问来源于stack exchange,提问作者New to coding

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:45:32