如何为未使用的因子添加零计数标签?

时间:2017-01-18 10:36:44

标签: r ggplot2

我想用y轴上的计数编号创建因子变量的条形图。此外,我想为所有因素添加计数标签,包括遗漏因素。

例如,下面的代码生成我需要的图形,但z因子没有标签(它应该是0),所以我想添加它。 ggplot2版本2.2.1.9000

df <- data.frame(x = factor(c("x", "x", "x"), levels = c("x","z")))
ggplot(df, aes(x)) + stat_count() + 
  geom_text(stat = "count" ,aes(label = ..count..),vjust = -1)  + 
  scale_x_discrete(drop = FALSE)

是否可以在没有数据转换的情况下执行此操作?

1 个答案:

答案 0 :(得分:3)

注意:

col2=[2,10]

这&#34;计算&#34;情节:

library(ggplot2)

df <- data.frame(x = factor(c("x", "x", "x"), levels = c("x","z")))

ggplot(df, aes(x)) +
  stat_count() +
  scale_x_discrete(drop = FALSE) -> gg

并且,gb <- ggplot_build(gg) 计算后,所有这些都可用:

stat_count()

您没有这些数据(摘自stat_count()):

gb$data[[1]]
##   y count prop x PANEL group ymin ymax xmin xmax colour   fill size linetype alpha
## 1 3     3    1 1     1     1    0    3 0.55 1.45     NA grey35  0.5        1    NA

要么写一个新的compute_group = function(self, data, scales, width = NULL) { x <- data$x weight <- data$weight %||% rep(1, length(x)) width <- width %||% (resolution(x) * 0.9) count <- as.numeric(tapply(weight, x, sum, na.rm = TRUE)) count[is.na(count)] <- 0 data.frame( count = count, prop = count / sum(abs(count)), x = sort(unique(x)), width = width ) } ,要么只是在绘图之外进行计算。