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= .."
所以最终结果看起来像
类似于这个问题,但是我们没有 fr
尝试以下方法:
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"]])) |
给出: