使用 ggplot2 中打印的计数创建堆积条形图

Creating a stacked bar chart with counts printed in ggplot2

所以我想创建一个堆叠条形图,为每个条形图打印频率计数 填充因子。

Showing data values on stacked bar chart in ggplot2

这道题将计数放在每个段的中心,但用户指定了值。在这个例子中我们没有输入具体的值,我正在寻找一个自动计算计数的r函数。

以下数据为例

set.seed(123)
a <- sample(1:4, 50, replace = TRUE)
b <- sample(1:10, 50, replace = TRUE)
data <- data.frame(a,b)
data$c <- cut(data$b, breaks = c(0,3,6,10), right = TRUE,
                         labels = c ("M", "N", "O"))
head(data)

ggplot(data, aes(x = a, fill = c)) + geom_bar(position="fill")

所以我想为 1、2、3 和 4 中的 M、N 和 O 值打印 "n= .."

所以最终结果看起来像

类似这个问题,但是我们没有fr

尝试以下操作:

obj <- ggplot_build(p)$data[[1]]

# some tricks for getting centered the y-positions:
library(dplyr)
y_cen <- obj[["y"]]
y_cen[is.na(y_cen)] <- 0
y_cen <- (y_cen - lag(y_cen))/2 + lag(y_cen)
y_cen[y_cen == 0 | y_cen == .5] <- NA

p + annotate("text", x = obj[["x"]], y = y_cen, label = paste("N = ", obj[["count"]]))

给出: