关于 r:创建一个堆叠条形图,其中打印在 ggplot2 中的计数

Creating a stacked bar chart with counts printed in ggplot2

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

在ggplot2的堆积条形图上显示数据值

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

以下面的数据为例。

1
2
3
4
5
6
7
8
9
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= .."

所以最终结果看起来像

enter

尝试以下方法:

1
2
3
4
5
6
7
8
9
10
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"]]))

给出:

enter