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

使用after_stat或..prop..导致ggplot2柱状图绘制异常

问题原因与解决方法

你的代码里p2的比例计算逻辑存在问题:geom_bar默认会按x的分组来计算prop,每个分组内的观测占比自然是1(100%),所以所有条形高度都一致。要计算整体数据集的比例,需要在aes里指定group = 1,让比例基于全部数据计算。

修正后的代码如下:

library(tidyverse)
library(patchwork) 
x <- rbinom(n = 1000, size = 5, prob = 0.3) #simulate a random sample
plotdatax = tibble(xvar = as.factor(x))
p1 <- ggplot(data = plotdatax) +
  geom_bar(aes(x = xvar))

# 新增group=1,让prop基于整体数据计算
p2 <- ggplot(data = plotdatax) +
  geom_bar(aes(x = xvar, y = after_stat(prop), group = 1))
p1+p2

另外,你提到的旧版..prop..和新版after_stat(prop)用法本质一致,问题不在语法版本,而是分组逻辑的缺失。如果用旧版写法,同样需要加group=1:

p2 <- ggplot(data = plotdatax) +
  geom_bar(aes(x = xvar, y = ..prop.., group = 1))

这样修改后,p2就能正确显示每个xvar类别在整体中的占比了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:32:32