使用ggplot facet_wrap按性别绘制血糖水平直方图报错求助
问题解决与修正代码
你的代码存在三个核心问题,导致报错且无法生成目标图:
- 分面参数错误:
facet_wrap(~Physiology)里的Physiology是数据框名称,不是用于分面的列名,需替换为分面依据的列sex。 - 直方图映射错误:直方图用于展示单个连续变量的分布,你错误地将
x映射为分类变量sex,应改为映射连续变量bloodlevel;同时直方图默认无需手动指定y轴(y轴自动为计数),多余的y=bloodlevel会干扰绘图逻辑。 - 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
相关产品推荐
相关产品推荐

